有两种方式解决
1.使用 shouldRasterize (之前有文章讲过)
2.使用
CAShapeLayer和UIBezierPath
对2举例
- (void)viewDidLoad
{
[super viewDidLoad];
//create shape layer
CAShapeLayer *blueLayer = [CAShapeLayer layer];
blueLayer.frame = CGRectMake(50, 50, 100, 100);
blueLayer.fillColor = [UIColor blueColor].CGColor;
{
[super viewDidLoad];
//create shape layer
CAShapeLayer *blueLayer = [CAShapeLayer layer];
blueLayer.frame = CGRectMake(50, 50, 100, 100);
blueLayer.fillColor = [UIColor blueColor].CGColor;
blueLayer.path = [UIBezierPath bezierPathWithRoundedRect:
CGRectMake(0, 0, 100, 100) cornerRadius:20].CGPath; //这个方法很重要 (这样做并不会比直接用cornerRadius更快,但是它避免了性能问题。)
?
//add it to our view
[self.view.layer addSublayer:blueLayer];
}