ios - iOS CALayer.zPosition 是否不超越 View 层次结构?

标签 ios uiview calayer alphablending z-order

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

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

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

myController.view.addSubview(newView)

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

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

myFeedbackView.layer.zPosition = 100.0

不幸的是,这似乎行不通。对守卫 View 使用 50% alpha 蓝色,反馈 View 并不像希望的那样明亮。

我曾认为 zPosition 胜过 subview 中的位置。那只在给定的容器内吗?我假设它对屏幕上的所有 View (及其关联层)都是全局的。

最佳答案

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

关于ios - iOS CALayer.zPosition 是否不超越 View 层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44687600/

相关文章:

ios - UICollectionView 窃取焦点

ios - Xcode UIView 随机调整大小

iphone - 制作通用 View Controller

ios - 如何在 ios 中的 CALayer 上添加按钮?

ios - 正确屏蔽 CALayers

ios - 在后台线程上将核心数据图像加载到 UITableViewCell 时崩溃

ios - 用填充和轮廓绘制SCNShape

ios - 没有获得位置 iOS8 的授权

ios - 如何使 2 个 UIScrollViews 显示相同的 UIView?

ios - 基于路径的 mask ,具有很好的抗锯齿效果