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

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

最佳答案

您的代码为工程图增加了另一个阶段。通常,将背景(具有给定的cornerRadius)直接绘制到目标,但是使用指定的遮罩将背景绘制到临时表面,然后使用遮罩将其复制到目标。

没有任何内置功能只能在标准CALayer对象中圆一些背景角。

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

关于ios - 为什么使两个角变圆比使所有角变圆慢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15192975/

10-10 11:52