masksToBounds和cornerRadius之间有什么关系?

17

我的滚动视图中有一些视图,其 cornerRadius = 10.0 并且 masksToBounds = YES

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

然而,我知道如何解决这个问题。就是将 masksToBounds 设置为 NO。(masksToBounds 的默认值为 NO) 尽管 masksToBoundsNO,我的视图的角仍然有曲线,并且性能问题也得到了解决。

我想了解 cornerRadiusmasksToBounds 之间的关系。我担心这种设置可能会出现意外问题。

谢谢。

2个回答

28

在指定一个用于绘制接收器的背景圆角的半径后,现在取决于 masksToBounds 属性,该属性确定子层是否被剪切到接收器边界。因此,如果将其设置为 YES,则将应用与图层边界匹配的隐式蒙版到图层上,包括 cornerRadius 属性的效果。如果将其设置为 YES 并同时指定 mask 属性,则两个蒙版将相乘以获取实际蒙版值。

例如:

如果您在具有图像内容的 CALayer 上设置了这些属性,则图像仍将在圆角边界外绘制。您可以通过将 sublayer.masksToBounds 设置为 YES 来解决这个问题;但是,如果这样做,阴影就不会显示出来,因为它们将被遮罩掉!


-2

实际上,当您调用角半径时,它会在您传递的半径处裁剪视图,并且MaskToBound:Yes会使其对您裁剪的部分透明,否则它将是可见的...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接