我们用masonry约束的时候其实并没有给控件一个具体的frame,所以调用 view.frame都是CGRectZero
所以添加layer的时候总是看不到效果,只需要把添加layer的代码放在下面方法即可:
-(void)layoutSublayersOfLayer:(CALayer *)layer{}
下面我们以圆角为例,直接上代码:
-(void)layoutSublayersOfLayer:(CALayer *)layer{
[super layoutSublayersOfLayer:layer];
//添加layer
[self addCornerMethod];
}
/**
添加layer方法
*/
-(void)addCornerMethod{
UIRectCorner corner = UIRectCornerAllCorners;
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:self.timeoutBtn.bounds byRoundingCorners:corner cornerRadii:CGSizeMake(3, 3)];
CAShapeLayer *masklayer = [[CAShapeLayer alloc]init];
masklayer.frame = self.timeoutBtn.bounds;
masklayer.path = path.CGPath;
self.timeoutBtn.layer.mask = masklayer;
}
搞定!!!