【问题标题】:iOS Z-order of UIViewUIView的iOS Z-order
【发布时间】:2016-02-10 10:13:15
【问题描述】:

我如何获得UIView 与关键窗口相关的 Z 顺序?

我对层次结构的深度不感兴趣。我不在乎关键窗口有多少超级视图。

只想知道哪些视图对用户来说“更接近”。

我尝试了各种可能性,例如

hittesting
view.layer.depth
post-order DFS (Or some sort of variation)

但是这个结果的答案是关于它的“环境”,而不是屏幕上视图的实际“绘制顺序”。

这是否可能以合理的方式进行?

【问题讨论】:

    标签: ios objective-c uiview calayer quartz-2d


    【解决方案1】:

    UIView 兄弟按照添加到父视图的顺序堆叠。

    您可以使用以下代码进行检查:

    顶部视图: [parentView.subviews lastObject];

    在底部查看: [parentView.subviews objectAtIndex:0];

    如果您希望一个视图出现在所有其他视图之前:

    [parentView bringSubviewToFront:view]
    

    【讨论】:

    • 我知道这一点。但它不能保证在层次结构中的表亲视图中一个高于另一个。
    • 另外,一个视图可以是清晰的,并且底层视图将是可见的。我只对用户实际可见的视图感兴趣。我不是在创造一个观点继承人的痛苦。我正在检查视图层次结构。
    【解决方案2】:

    视图出现在子视图数组中的顺序决定了它们的 Z 顺序。如果使用 addSubView() 在视图 B 之前添加视图 A,则视图 B 将位于视图 A 之上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-12
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 2013-04-26
      相关资源
      最近更新 更多