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

Tra*_*ggs 3 alphablending z-order calayer uiview ios

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

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

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

myController.view.addSubview(newView)
Run Code Online (Sandbox Code Playgroud)

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

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

myFeedbackView.layer.zPosition = 100.0
Run Code Online (Sandbox Code Playgroud)

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

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

Tra*_*ggs 5

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