Maskstobounds与clipstobounds

时间:2016-09-13 08:57:49

标签: ios objective-c swift cocoa-touch

clipstobounds maskstobounds 这两方面都做同样的工作。

我发现它们之间没有任何区别。

有人善意地解释两者是如何不同的。

2 个答案:

答案 0 :(得分:19)

<强> masksToBounds

  

图层中任何延伸到其边界外的子图层都将被剪裁到这些边界。在这种情况下,将层视为其子层的窗口;窗口边缘以外的任何东西都不可见。当masksToBounds为NO时,不会发生削波。

     

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

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

<强> clipToBounds

  

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

了解更多信息sample link

答案 1 :(得分:15)

Clipstobounds : 将clipsToBounds设置为YES,我只会看到子视图中符合superview范围的部分。否则,如果clipsToBounds设置为NO,我将看到整个子视图,甚至是superview之外的部分

<强> Maskstobounds : 如果masksToBounds属性设置为YES,则图层中任何延伸到其边界外的子图层将被剪切到这些边界。在这种情况下,将层视为其子层的窗口;窗口边缘以外的任何东西都不可见。当masksToBounds为NO时,不会发生剪切,并且任何延伸到图层边界外的子图层都将完整可见(只要它们不会超出任何启用了屏蔽的超级图层的边缘)。