iOS masonry添加约束之后 添加layer

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CX_NO1/article/details/82588717

我们用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;
}

搞定!!!

猜你喜欢

转载自blog.csdn.net/CX_NO1/article/details/82588717