为什么要使两个角落圆形比使所有角落更圆?

时间:2013-03-04 01:06:16

标签: ios layer

编辑:更新语言以提高可读性。

我制作了一个带有2个圆角的图像视图,如下所示:

UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.photoImageView.bounds byRoundingCorners:UIRectCornerBottomLeft|UIRectCornerBottomRight cornerRadii:CGSizeMake(10, 10)];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.path = maskPath.CGPath;
self.photoImageView.layer.mask = maskLayer;

但它比使用此代码完成所有角落要慢。

self.photoImageView.layer.cornerRadius = 10;

有人知道为什么以及如何改进我的“2角”代码?

1 个答案:

答案 0 :(得分:2)

您的代码正在为绘图添加另一个阶段。通常,背景(使用给定的cornerRadius)直接绘制到目标,但是如果指定了蒙版,则会将其绘制到临时曲面,然后使用蒙版复制到目标。

没有任何内置功能可以仅对标准CALayer对象中的某些背景角进行舍入。

我确实想知道“慢”的速度有多慢;这是不成熟的优化吗?