第一种方法:通过设置layer的属性(同时使用cornerRadius,masksToBounds会造成离屏渲染)
最简单的一种,但是很影响性能,一般在正常的开发中使用很少.
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
//只需要设置layer层的两个属性
//设置圆角
imageView.layer.cornerRadius = imageView.frame.size.width /
//将多余的部分切掉
imageView.layer.masksToBounds = YES;
[self.view addSubview:imageView];
第二种方法:使用CAShapeLayer和UIBezierPath设置圆角(性能相对好)封装 扩展一个 view
#import <UIKit/UIKit.h>
@interface UIView (PCFrame)
/**
- 设置圆角
cornerRadii:圆角大小
corner:那个方向设置圆角
**/
- (void)setCornerWithCornerRadii:(CGSize)cornerRadii byRoundingCorners:(UIRectCorner)corner;
@end
#import “UIView+PCFrame.h”
@implementation UIView (PCFrame)
-
(void)setCornerWithCornerRadii:(CGSize)cornerRadii byRoundingCorners:(UIRectCorner)corner{
UIBezierPath *maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:self.bounds
byRoundingCorners:corner
cornerRadii:cornerRadii];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = self.bounds;
maskLayer.path = maskPath.CGPath;self.layer.mask = maskLayer;
}
@end