首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >masksToBounds与clipsToBounds

masksToBounds与clipsToBounds
EN

Stack Overflow用户
提问于 2016-09-13 16:57:49
回答 2查看 31K关注 0票数 46

在我看来,UIView clipsToBounds和CALayer masksToBounds都做同样的工作。

我找不出它们之间有什么不同。

有没有人能解释一下他们的不同之处?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-13 17:11:48

masksToBounds

层的任何延伸出其边界的子层都将被剪裁到这些边界上。在这种情况下,可以将层视为其子层上的窗口;窗口边缘之外的任何内容都将不可见。当masksToBounds为NO时,不会发生剪裁。

当此属性的值为true时,Core Animation将创建一个隐式剪切蒙版,该蒙版与图层的边界相匹配,并包含任何角半径效果。如果还指定了掩码属性的值,则将两个掩码相乘以获得最终的掩码值。

您可以在API Reference中获取更多信息。

clipToBounds

clipsToBounds的用例更多的是用于部分位于主视图之外的子视图。例如,我在其父(矩形) UIView的边缘上有一个(圆形)子视图。如果将clipsToBounds设置为YES,则只会显示半个圆/子视图。如果设置为NO,则会显示整个圆圈。刚遇到这个,所以想和大家分享

有关更多信息,请访问sample link

票数 45
EN

Stack Overflow用户

发布于 2016-09-13 17:10:08

clipsToBounds:在将“剪辑到边界”设置为“是”的情况下,我将只看到适合superview范围的子视图部分。否则,如果将“剪辑到边界”设置为“否”,我将看到整个子视图,甚至是superview之外的部分。

masksToBounds:如果将masksToBounds属性设置为YES,则延伸到其边界之外的图层的任何子层都将被剪裁到这些边界。在这种情况下,可以将层视为其子层上的窗口;窗口边缘之外的任何内容都将不可见。当masksToBounds为NO时,不会发生裁剪,并且延伸到层边界之外的任何子层都将是完整可见的(只要它们不超出任何启用了遮罩的超层的边缘)。

票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39466001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档