为UIView设置圆角是实际开发中常需要处理的问题,就UIView而言相关的api没有找到直接设置的方法;不过UIView是对CALayer的封装,设置CALayer圆角则可以出来相应的效果。下面介绍几种设置圆角的方法:
1、为UIView的所有角都设置圆角:
CALayer *layer=[view layer];
//是否设置边框以及是否可见
[layer setMasksToBounds:YES];
//设置边框圆角的弧度
[layer setCornerRadius:radius];
MasksToBounds必须设置成yes否则不能出现效果
2、为UIView的某个或者某几个角设置成圆角:
-(void)setRoundRadius:(UIView *)needView{
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:needView.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii:CGSizeMake(8, 8)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = needView.bounds;
maskLayer.path = maskPath.CGPath;
needView.layer.mask = maskLayer;
}
其中needView表示需要设置圆角的UIView,byRoundingCorners可以做相应的组合,总的有下面几种:
typedef NS_OPTIONS(NSUInteger, UIRectCorner) {
UIRectCornerTopLeft = 1 << 0,
UIRectCornerTopRight = 1 << 1,
UIRectCornerBottomLeft = 1 << 2,
UIRectCornerBottomRight = 1 << 3,
UIRectCornerAllCorners = ~0UL
};
3、使用CoreGraphic自己画