屏蔽层和添加子层iOS之间的区别

Posted

技术标签:

【中文标题】屏蔽层和添加子层iOS之间的区别【英文标题】:Difference between masking a layer and adding sublayer iOS 【发布时间】:2018-08-07 09:58:55 【问题描述】:

想了解屏蔽任何图层和添加图层作为子图层之间的确切区别。我已经搜索并找到了一些答案,但无法正确理解。

我发现像遮罩这样的东西会导致屏幕外渲染,但添加子图层不会,所以我们不能只使用 addsublayer 吗?

在这里我找到了一些东西,但没有得到这个,所以如果有任何 this 的例子会有所帮助


更具体:让我们说layer1现在我想了解以下之间的区别:

addSublayer(layer1) mask = layer1

我们在这里知道,两者都是使用 UIView 的主层应用的,例如 view.layer

【问题讨论】:

【参考方案1】:

Layer - 是“超级视图上的下一个视图”,但子层是“超级层上的下一层”。 层次结构: 视图(超级)-> 有视图(超级)-> 有图层(超级):[layer1, layer2, etc] -> layer1(super) -> 有 sublayers(super) [sublayer1, sublayer2, etc]。 子层 - 层次结构中的端点。

一个视图可以有更多的层。层可以有更多的子层。但子层不能有其他子层。

//对不起我的英语:)

【讨论】:

感谢您的回复,但我的问题是使用addSublayer: 添加图层和使用mask = layer 添加图层之间的区别【参考方案2】:

如果我理解正确,图层会添加到视图顶部,而蒙版是当前图层的减法。

如果您有一个渐变层,请将其添加到视图中,它将遵循指定的渐变方向,比如说从下到上。但是,如果您添加与蒙版相同的渐变,您将减去该图层,因此它希望渐变来自顶部到底部。您也可以使用蒙版来剪切图像中的形状。不过它们非常相似。

【讨论】:

以上是关于屏蔽层和添加子层iOS之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

如何根据与其添加对应的索引删除子层?

将子层添加到 view.layer 会改变框架位置?

王道考研 计算机网络13 局域网 以太网 FDDI网 ATM网 适配器 MAC地址 IEEE802.11标准 无线局域网 数据链路层的MAC子层和LLC子层

添加 CAGradientLayer 子层时,UITableViewCell 不拾取 UITableViewCellSelectionStyleBlue

在 iOS 中,将视图添加为子视图与将视图分配给视图属性之间有区别吗?

向 UITableViewCell 的 UIView(背景视图)添加子层会覆盖其他单元格视图吗?