iOS CALayer.zPosition 不会超越视图层次结构吗?

Posted

技术标签:

【中文标题】iOS CALayer.zPosition 不会超越视图层次结构吗?【英文标题】:Does iOS CALayer.zPosition NOT transcend view hierarchies? 【发布时间】:2017-06-21 23:10:10 【问题描述】:

我的应用中有一个阶段需要与设备“同步”。在此期间,我想 a) 防止用户触摸东西 b) 显示同步操作的一些进度。

我制作了一个自定义 UIView 来显示我的百分比反馈并将其放置在视图树中的适当位置。这解决了(b)。

对于 (a),我只是在所有东西的顶部添加一个 UIView

myController.view.addSubview(newView)

并操纵它的 alpha 值。通过使用半透明颜色/alpha 值,我可以将应用“变灰”。

但是,我希望我的反馈控件仍然显示“全彩”。我认为我可以简单地调整所述视图的layer.zPosition 以使其绘制在遮蔽/阻塞/灰色视图“上方”。

myFeedbackView.layer.zPosition = 100.0

不幸的是,这似乎不起作用。使用 50% 的 alpha 蓝色作为保护视图,反馈视图不会像希望的那样明亮全彩。

我曾认为zPosition 胜过子视图中的位置。是否仅在给定容器内?我认为它对屏幕上的所有视图(及其相关层)都是全局的。

【问题讨论】:

【参考方案1】:

在对简单的颜色图块进行了一些实验之后,我想我得出的结论是,在每个容器级别都完成了顺序视图的绘制。在该级别,首先使用 zPosition,然后使用子视图顺序(当 zPosition 匹配时)。但这只是在一组子视图的上下文中。这些子视图的容器将根据相同的标准对其兄弟进行仲裁。我希望 Apple 文档能更清楚地说明这一点。但也许我只是挖得不够深。

【讨论】:

以上是关于iOS CALayer.zPosition 不会超越视图层次结构吗?的主要内容,如果未能解决你的问题,请参考以下文章

iOS用户就是壕!应用内付费超安卓40%!主要买游戏装备!

不会吧不会吧,不会还有人不知道这个超赞的主题吧?

ValidationSummary 超链接不会更改选项卡

Angular Bootstrap 警报不会在超时时关闭

ios超全开源项目 - 转载

超简单的Python教程系列——第12篇:文件处理