1

我只需要为 UILabel 制作顶部的两个角,所以经过一些探索后我就这样做了。

UIBezierPath *maskPath;

maskPath = [UIBezierPath bezierPathWithRoundedRect:label.bounds byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) cornerRadii:CGSizeMake(8.0, 8.0)];

CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = label.bounds;
maskLayer.path = maskPath.CGPath;
label.layer.mask = maskLayer;

这样做有效率吗?在一个论坛中,他们提到不要为了有效的目的多次使用它。如果是这样,我该怎么办?我需要在几个地方。谢谢。

4

1 回答 1

0

这样做非常好——它并不比创建一个相当大小的位图并在其上绘制几条曲线更耗费资源。当他们说不要多次使用它时,他们的意思是在对象的生命周期内不要多次使用它(即在加载时只调用一次)。您可以将它用于应用程序中的每个标签(initWithFrame:例如,覆盖 ),您会没事的。

于 2014-01-23T04:03:38.783 回答