maskToBounds和cornerRadius之间的关系是什么?

时间:2012-07-04 08:04:17

标签: iphone objective-c ios calayer cornerradius

我的滚动条有一些cornerRadius = 10.0masksToBounds = YES的视图。

这会导致滚动滚动视图时出现性能问题。虽然我尝试了每个视图的shouldRasterize设置为YES,但问题仍未解决。

但是,我知道这个问题的解决方案。这就是设置masksToBound NO的原因。 (masksToBound's默认值为NO) 虽然masksToBoundNO,但我的观点的角落仍然有曲线,性能问题也已解决。

我想了解cornerRadiusmasksToBounds之间的关系。我担心这个设置会出现意想不到的问题。

谢谢。

2 个答案:

答案 0 :(得分:25)

提供cornerRadius后,指定用于绘制接收器背景圆角的半径。

现在它取决于masksToBounds,它确定子层是否被剪切到接收器的边界。因此,如果将其设置为YES,则将与图层边界匹配的隐式遮罩应用于图层,包括cornerRadius属性的效果。如果将其设置为YES并指定了mask属性,则将两个掩码相乘以获取实际的掩码值。

例如:

如果在具有图像内容的CALayer上进行设置,则仍会在角半径边界外绘制图像。您可以将sublayer.masksToBounds设置为YES来解决此问题;但如果你这样做,阴影就不会出现,因为它们会被掩盖掉!

答案 1 :(得分:-2)

没有任何特定的关系..实际上,当你调用Corner Radius时,它将裁剪你已经通过的半径的视图和MaskToBound:是的,使它对你已裁剪的那部分透明,否则它将是可见的。 ..