直接上原理
控制layer本身渲染的一个layer。效果是:比如imageLayer有一个maskLayer作为mask(注意maskLayer可以不跟imageLayer大小一样),那maskLayer透明的地方,imageLayer就不会渲染,而是变透明,显示出imageLayer之后的内容,maskLayer不透明的地方,imageLayer就会正常渲染,显示出imageLayer本来的内容如果maskLayer比imageLayer要小,那默认的maskLayer之外的地方都是透明的,都不会渲染。
由以上原理可知,如果我们想让一个视图只展示一部分,
那么我们可以通过设置其layer.mask来实现,
如果一个视图要实现一个渐变的展示,我们也可以通过
layer.mask实现
self.view.backgroundColor = [UIColor cyanColor];
CALayer *layer = [[CALayer alloc] init];
layer.frame = CGRectMake(100, 200, 100, 100);
layer.backgroundColor = [UIColor whiteColor].CGColor;
self.view.layer.mask = layer;
效果
整个页面只展示了一部分
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor cyanColor];
CAGradientLayer *gradientlayer = [[CAGradientLayer alloc] init];
gradientlayer.frame = CGRectMake(100, 100, 100, 100);
gradientlayer.colors = @[(id)[[UIColor whiteColor] colorWithAlphaComponent:0].CGColor, (id)[[UIColor whiteColor] colorWithAlphaComponent:1].CGColor];
gradientlayer.locations = @[@0, @1];
self.view.layer.mask = gradientlayer;
// Do any additional setup after loading the view.
}