Maskstobounds与clipstobounds

sat*_*ker 27 cocoa-touch objective-c ios swift

在我看来,clipstoboundsmaskstobounds都做同样的工作.

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

有人善解释两者是如何不同的.

Anb*_*hik 26

masksToBounds

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

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

您可以在API参考中获得更多信息.

clipToBounds

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

了解更多信息示例链接

  • 恕我直言,这并没有解释差异..我猜不同的是,一个是层,一个是视图;)最终是相同的 (13认同)
  • 你能否附上截图,以便更加了解.. (4认同)
  • 它们并不相同:例如,使用 maskToBounds 可以在角视图周围显示阴影。而clipToBounds也会剪切阴影,因为阴影层将从视图的遮罩上脱落 (4认同)

Bha*_*ata 18

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

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

  • 我想知道如果clipToBounds设置为false并且maskToBounds设置为true会发生什么 (6认同)
  • 你能否附上截图,以便更加了解.. (5认同)