1

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

我制作了一个带有 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角”代码吗?

4

1 回答 1

2

您的代码正在向绘图添加另一个阶段。通常,背景直接绘制(使用给定的cornerRadius)到目标,但使用指定的遮罩,它被绘制到临时表面,然后使用遮罩复制到目标。

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

我确实想知道“慢”到底有多慢;这是过早的优化吗?

于 2013-03-04T01:27:25.353 回答