picImageview=[[UIImageView alloc]init]
int a=3
picImageview.frame=CGRectMake(0, 0, 180*a, 250*a)
UIImage * picImage =[UIImage imageNamed:@"1.png"]
picImageview.image=picImage
UIScrollView *s=[[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 180, 250)]
s.backgroundColor=[UIColor redColor]
s.contentSize=CGSizeMake(180*a, 250*a)
[s addSubview:picImageview]
//遮罩层的图片
CALayer *maskLayer=[CALayer layer]
maskLayer.frame=CGRectMake(0, 0, 180, 250)
UIImage * maskImage =[UIImage imageNamed:@"abc.png"]
maskLayer.contents=(__bridge id)maskImage.CGImage
UIView *aaaa=[[UIView alloc]initWithFrame:CGRectMake(0, 80, 180, 250)]
aaaa.userInteractionEnabled=YES
aaaa.layer.mask=maskLayer
[aaaa addSubview:s]
[self.view addSubview:aaaa]
知 识 点 / 超 人
mask(遮罩层)
一个CALayer中如果存在多个子CALayer,与一个UIView中存在多个子View是一样的。但CALayer中还有一个特殊的存在, mask (遮罩层),mask是CALayer的一个属性,其本身也是CALayer,添加mask也是添加一个子CALayer。但是呈现方式与加一个子CALayer不同。
加上mask后整个绿色界面完全消失了,并且我们的mask大小只设置了 55,绿色界面大小是75,绿色界面以内mask以外的区域也没显示.而是整个UIView都消失了。
绿色的界面又出现了。
alpha都设置为0了,为什么会显示边框呢? 这是因为CALayer分为3层,contents层、backgroundColor层还有border层。alpha只会影响backgroundColor层。控制整个mask透明度的是opacity属性而不是alpha
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)