maskToBounds 和cornerRadius 之间有啥关系?

Posted

技术标签:

【中文标题】maskToBounds 和cornerRadius 之间有啥关系?【英文标题】:what is relation between masksToBounds and cornerRadius?maskToBounds 和cornerRadius 之间有什么关系? 【发布时间】:2012-07-04 08:04:17 【问题描述】:

我的卷轴有一些视图是cornerRadius = 10.0masksToBounds = YES

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

但是,我知道这个问题的解决方案。这就是masksToBound 设置为NO。 (masksToBound's 默认值为 NO) 虽然masksToBoundNO,但我的view 的角还是有曲线的,性能问题也解决了。

我想知道cornerRadiusmasksToBounds 之间的关系。我担心此设置会出现意外问题。

谢谢。

【问题讨论】:

【参考方案1】:

在提供cornerRadius 之后,它指定了用于绘制接收者背景圆角的半径。

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

例如:

如果您将其设置在带有图像内容的CALayer 上,图像仍将绘制在圆角半径边界之外。您可以通过将sublayer.masksToBounds 设置为YES 来解决此问题;但如果你这样做,阴影就不会出现,因为它们会被遮住!

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于maskToBounds 和cornerRadius 之间有啥关系?的主要内容,如果未能解决你的问题,请参考以下文章

使用将 maskToBounds 设置为 true 和cornerRadius 不会更改视图

UITableViewCell 在子视图性能问题中调用 .layer.maskToBounds = YES [重复]

IOS UIDynamicAnimator maskToBounds 不会使碰撞作为边界工作

WPFのclipToBounds与maskToBounds的区别

WPFのclipToBounds与maskToBounds的区别

使视图在没有 maskToBounds 的情况下为圆形