使用UIBezierPath和CAShapeLayer在IOS上制作弯曲边缘是否有效?

时间:2013-04-30 04:51:36

标签: iphone ios cocoa-touch uibezierpath cashapelayer

我必须只为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;

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

1 个答案:

答案 0 :(得分:0)

这样做非常好 - 与创建可比较大小的位图并在其上绘制几条曲线相比,它不再是资源密集型的。当他们说不要多次使用它时,它们意味着在对象的生命周期内不要多次使用它(即在加载它时只调用一次)。您可以将此用于应用中的每个标签(例如,覆盖initWithFrame:),您就可以了。