Начиная с iOS 3.2, вы можете использовать функциональность UIBezierPath
s для создания прямоугольного прямоугольника с закругленными углами (только закругленные углы) Затем вы можете использовать это как путь к CAShapeLayer
и использовать это как маску для слоя вашего вида:
// Create the path (with only the top-left corner rounded)
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:imageView.bounds
byRoundingCorners:UIRectCornerTopLeft
cornerRadii:CGSizeMake(10.0, 10.0)];
// Create the shape layer and set its path
CAShapeLayer *maskLayer = [CAShapeLayer layer];
maskLayer.frame = imageView.bounds;
maskLayer.path = maskPath.CGPath;
// Set the newly created shape layer as the mask for the image view's layer
imageView.layer.mask = maskLayer;
И это все - не нужно возиться с определением фигур вручную в Core Graphics, не создавать маскирующие изображения в Photoshop. Слой даже не нуждается в аннулировании. Применение закругленного угла или переход к новому углу так же просто, как определение нового UIBezierPath
и использование его CGPath
в качестве пути слоя маски. Параметр corners
метода bezierPathWithRoundedRect:byRoundingCorners:cornerRadii:
является битовой маской, поэтому несколько углов могут быть округлены путем ИЛИ их вместе.
ПРИМЕЧАНИЕ - Маски слоя не будут отображаться при использовании в сочетании с методом CALayer renderInContext. Если вам нужно использовать это, попробуйте скруглить углы следующим образом: Всего два закругленных угла? .