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 不会超越视图层次结构吗?的主要内容,如果未能解决你的问题,请参考以下文章