【问题标题】:UIView subviews' order?UIView 子视图的顺序?
【发布时间】:2013-09-05 12:22:45
【问题描述】:

如果我使用 for 循环;

for(UIView *subview in [myView subviews])

子视图按什么顺序被带入?

根据他们添加的顺序还是别的什么?

【问题讨论】:

  • 别的。您只需启动official documentation 即可轻松找到它。
  • 但是你也可以检查 UIClass 比如 if([subView isKindOfClass:[UILabel class]]) // 检查是 SubView Class 是 UILabel 类吗? { // 你可以在这里为你的 UILabel 编写代码; }
  • @iPatel 我看不出这与问题有什么关系。
  • @H2CO3 - 是的,但我只是想告诉 OP 你也可以像这样得到它,所以.. 我也把它作为评论 :) 谢谢 :)
  • 数组中子视图的顺序反映了它们在屏幕上的可见顺序,索引为 0 的视图是最后面的视图。这就是子视图方法描述的内容。

标签: ios subview addsubview subviews


【解决方案1】:

正如文档所说,它反映了它们在屏幕上的可见顺序。

@property(nonatomic, readonly, copy) NSArray *subviews

讨论

您可以使用此属性来检索与 您的自定义视图层次结构。数组中子视图的顺序 反映它们在屏幕上的可见顺序,视图位于索引 0 是最后面的视图。

对于在 UIKit 和其他系统框架中声明的复杂视图,任何 视图的子视图通常被认为是私有的并且受制于 随时改变。因此,您不应尝试检索或 修改这些类型的系统提供的视图的子视图。如果你这样做, 您的代码可能会在未来的系统更新期间中断。

【讨论】:

  • 我的英语可能不太好,但什么是“可见的秩序”?它是如何计算的?什么是最后面?最靠后从哪一侧?这是否意味着子视图添加到其父视图的顺序?
  • 旧问题和评论,但@AndreyChernukha,后面的意思是离查看者最远的视图,3D 层次结构中堆栈的底部。当您添加视图时,它们会被添加到堆栈的顶部,因此顺序几乎与添加的顺序相同,除了显式重新排序。
  • @ChrisConover 非常感谢,伙计。这是有道理的
【解决方案2】:

我发现它很有用,根据我的经验,它会放置 subviews 以便添加它们。使用UIScrollView 时请小心使用它们。我偶尔会遇到为滚动条创建的“幻影”subviews

【讨论】:

    猜你喜欢
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多