在我看来,UIView clipsToBounds和CALayer masksToBounds都做同样的工作。
我找不出它们之间有什么不同。
有没有人能解释一下他们的不同之处?
发布于 2016-09-13 17:11:48
masksToBounds
层的任何延伸出其边界的子层都将被剪裁到这些边界上。在这种情况下,可以将层视为其子层上的窗口;窗口边缘之外的任何内容都将不可见。当masksToBounds为NO时,不会发生剪裁。
当此属性的值为true时,Core Animation将创建一个隐式剪切蒙版,该蒙版与图层的边界相匹配,并包含任何角半径效果。如果还指定了掩码属性的值,则将两个掩码相乘以获得最终的掩码值。
您可以在API Reference中获取更多信息。
clipToBounds
clipsToBounds的用例更多的是用于部分位于主视图之外的子视图。例如,我在其父(矩形) UIView的边缘上有一个(圆形)子视图。如果将clipsToBounds设置为YES,则只会显示半个圆/子视图。如果设置为NO,则会显示整个圆圈。刚遇到这个,所以想和大家分享
有关更多信息,请访问sample link
发布于 2016-09-13 17:10:08
clipsToBounds:在将“剪辑到边界”设置为“是”的情况下,我将只看到适合superview范围的子视图部分。否则,如果将“剪辑到边界”设置为“否”,我将看到整个子视图,甚至是superview之外的部分。
masksToBounds:如果将masksToBounds属性设置为YES,则延伸到其边界之外的图层的任何子层都将被剪裁到这些边界。在这种情况下,可以将层视为其子层上的窗口;窗口边缘之外的任何内容都将不可见。当masksToBounds为NO时,不会发生裁剪,并且延伸到层边界之外的任何子层都将是完整可见的(只要它们不超出任何启用了遮罩的超层的边缘)。
https://stackoverflow.com/questions/39466001
复制相似问题