使用frame布局,是完全沒問題的,如果想用masonry,就需要讓約束布局生效,讓視圖先渲染出來就可以了,一般做法是使用這個(gè)切圓角方法前,調(diào)一下父類的[superView setNeedsLayout] 和[superView layoutIfNeeded];
1.如果是切四個(gè)角的圓角,代碼示例:
self.picImage.layer.cornerRadius = 8;
self.picImage.layer.masksToBounds = YES;
2.如果是四個(gè)角中的某幾個(gè)角,一個(gè),兩個(gè),或者3個(gè),代碼示例(切的左下,和右下):
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.tipLabel.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(5, 5)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = _tipLabel.bounds;
maskLayer.path = maskPath.CGPath;
self.tipLabel.layer.mask = maskLayer;
==================================
類型共有以下幾種:
UIRectCornerTopLeft
UIRectCornerTopRight
UIRectCornerBottomLeft
UIRectCornerBottomRight
UIRectCornerAllCorners
更新:一般都是通過生成UIView的類別的方式來復(fù)用。