【发布时间】:2013-02-14 01:38:38
【问题描述】:
我正在尝试将 UIView 的底部两个角变圆,并使图层的边框也变圆。我目前正在做:
UIRectCorners corners = UIRectCornerBottomLeft | UIRectCornerBottomRight;
CGSize radii = CGSizeMake(kThisViewCornerRadius, kThisViewCornerRadius);
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:myView.bounds
byRoundingCorners:corners
cornerRadii:radii];
CAShapeLayer *maskLayer = [CAShapeLayer layer];
[maskLayer setPath:path.CGPath];
myView.layer.mask = maskLayer;
这适用于普通视图。但是,myView 的图层有其borderColor 和borderWidth 设置,从截图中可以看出,图层的边框没有变圆:
我还尝试子类化 UIView 并从 +[Class layerClass] 返回 [CAShapeLayer layer],并将视图的图层设置为一个形状图层,但边框最终位于视图的子视图下方。
是否可以圆化视图的某些角,圆化视图层的边框,并将子视图裁剪到层的边框下方?
请注意,这不是关于如何圆角而不是其他角,而是关于如何使笔划正确运行。
【问题讨论】:
-
添加一个被描边到图层层次结构中的形状图层?
-
好建议,但我测试了它,形状图层的笔触仍然显示在视图的子视图后面。
-
实际上,您的评论让我想到了正确的方向,最终我明白了。我会发布它作为答案。谢谢!
标签: ios objective-c calayer