1. 程式人生 > >iOS masonry新增約束之後 新增layer

iOS masonry新增約束之後 新增layer

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

搞定!!!