iOS masonry新增約束之後 新增layer
阿新 • • 發佈:2018-11-08
我們用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; }
搞定!!!