Почему два угла округляются медленнее, чем все углы?

Изменить: Язык обновлен для улучшения читабельности.

Я сделал изображение с 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 ответ

Ваш код добавляет еще один этап к чертежу. Обычно фон рисуется (с указанным cornerRadius) непосредственно к цели, но с заданной маской он рисуется на временной поверхности, а затем копируется в цель с помощью маски.

В стандартном объекте CALayer отсутствует какая-либо встроенная функциональность для округления только некоторых фоновых углов.

Я действительно задаюсь вопросом, насколько медленный "медленный" действительно; это преждевременная оптимизация?

Другие вопросы по тегам