使用frame布局,是完全没问题的,如果想用masonry,就需要让约束布局生效,让视图先渲染出来就可以了,一般做法是使用这个切圆角方法前,调一下父类的[superView setNeedsLayout] 和[superView layoutIfNeeded];
1.如果是切四个角的圆角,代码示例:
self.picImage.layer.cornerRadius = 8;
self.picImage.layer.masksToBounds = YES;
2.如果是四个角中的某几个角,一个,两个,或者3个,代码示例(切的左下,和右下):
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的类别的方式来复用。