ios - 在视图层次结构中全局更改 UIView 显示顺序
问题描述
考虑以下视图层次结构:
let bottomView = UIView()
addSubview(bottomView)
let bottomViewSubview = UIView()
bottomView.addSubview(bottomViewSubview)
let topView = UIView()
addSubview(topView)
// bottomViewSubview.displayOnTopOfTopView() - How?
我想知道 UIKit 中是否有可能在不更改视图/子视图层次结构的情况下始终在所有其他视图之上显示某个视图的子视图,包括覆盖其父视图的视图。据我所知,CALayer.zIndex 只在 UIView 的子层中工作,而不是在我需要的全局范围内工作。而且我无法更改层次结构,因为我想在其他所有事情(例如子视图转换)中都依赖它。
我想唯一的选择是创建新视图,它实际上位于视图层次结构的顶部,并手动同步所有转换以使其看起来像是某人的子视图?
解决方案
您可以删除视图并使用该insert(_: at:)
功能移动视图。或者,bringSubviewToFront(UIView)
可以sendSubviewToBack(UIView)
使用。如果您没有对需要移动的视图的引用,则可以使用该subviews
属性来查找它。
bringSubviewToFront(bottomViewSubview)
推荐阅读
- python - 如何解决 TiffFileError: Not a Tiff File and Byte Problem with KeyError: b'\x89P'
- javascript - TypeError('Router.use() 需要一个中间件函数但得到了一个 ' + gettype(fn)) FeathersJS
- c++ - 您如何在与打开窗口的功能不同的功能中使用绘图功能?
- python - 仅从数据框中查询新数据,将其与数据库进行比较
- amazon-web-services - 如何编写 IAM 策略以检查多个可能值的列表
- javascript - 如何知道,AJAX 请求何时在 Native Javascript 中完全加载?
- php - 使用 puppeteer 无头模式在新选项卡中打开时下载 pdf 文件
- r - 将百分比变化(时间序列)应用于单个数字以创建新的时间序列?
- jquery - Linked Owl Carousels - 1 控制另一个
- android - 为什么strings.xml 和styles.xml 中没有DTD?