maskToBounds 和cornerRadius 之间有啥关系?
Posted
技术标签:
【中文标题】maskToBounds 和cornerRadius 之间有啥关系?【英文标题】:what is relation between masksToBounds and cornerRadius?maskToBounds 和cornerRadius 之间有什么关系? 【发布时间】:2012-07-04 08:04:17 【问题描述】:我的卷轴有一些视图是cornerRadius = 10.0
和masksToBounds = YES
。
这会导致滚动我的滚动视图时出现性能问题。虽然我尝试了每个视图的shouldRasterize
设置为YES
,但问题并没有解决。
但是,我知道这个问题的解决方案。这就是masksToBound
设置为NO
。 (masksToBound's
默认值为 NO)
虽然masksToBound
是NO
,但我的view 的角还是有曲线的,性能问题也解决了。
我想知道cornerRadius
和masksToBounds
之间的关系。我担心此设置会出现意外问题。
谢谢。
【问题讨论】:
【参考方案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的区别