maskView 加载 CAGradientLayer
1.用CAGradientLayer 直接产生带透明像素通道的layer
2.用maskView直接加载带CAGradientLayer的view
CGFloat width = 120;
//加载图片
self.baseImageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, width, width)];
// self.baseImageView.image = [UIImage imageNamed:@"base"];
[self.view addSubview:self.baseImageView];
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = self.baseImageView.bounds;
gradientLayer.colors = @[(id)[UIColor clearColor].CGColor,
(id)[UIColor blackColor].CGColor,
(id)[UIColor clearColor].CGColor];
gradientLayer.locations = @[@(0.25),@(0.5),@(0.75)];
gradientLayer.startPoint = CGPointMake(0, 0);
gradientLayer.endPoint = CGPointMake(1, 0);
[self.view.layer addSublayer:gradientLayer];
//容器view,加载CAGradientLayer
UIView *contentView = [[UIView alloc] initWithFrame:self.baseImageView.bounds];
[contentView.layer addSublayer:gradientLayer];
//设定maskView
self.baseImageView.maskView = contentView;
//动画的运用
CGRect frame = contentView.frame;
frame.origin.x += 400;
contentView.frame = frame;
[UIView animateWithDuration:2.f animations:^{
//改变位移
CGRect frame = contentView.frame;
frame.origin.x += 400;
//重新赋值
contentView.frame = frame;
}];