iOS 中深度嵌套的视图层次结构可以吗?

Posted

技术标签:

【中文标题】iOS 中深度嵌套的视图层次结构可以吗?【英文标题】:Is deeply nested view hierarchy in iOS ok? 【发布时间】:2015-06-02 12:15:21 【问题描述】:

android 中,建议将视图层次深度保持在 10 以下,并且严格控制在 20 以下,否则您的应用很可能会表现不佳或崩溃(UI 线程只有很小的 8-16kB 堆栈空间)

这是否适用于 ios,无论是否有自动布局(为什么或为什么不)?

【问题讨论】:

你能解释为什么这是一个问题吗? 10-deep 似乎有点矫枉过正。 如果你没有正确规划,在 android 中可能会出现 >10 的复杂布局 【参考方案1】:

iOS 中的视图由 OpenGL 提供支持,并具有惊人的性能。我的个性已经深入到 50 次,没有任何问题。我不建议将深度设置得比必要的大,但是当情况需要时,它是可行的。

【讨论】:

【参考方案2】:

更新:

如果你使用自动布局实际上是很糟糕的,因为约束求解具有多项式复杂性(食火鸡是线性的,因为它解决了线性方程)

    http://floriankugler.com/2013/04/22/auto-layout-performance-on-ios/

    http://pilky.me/36/

然而,正如这里的帖子所暗示的那样,UIView 本身非常快。我最终用替代系统替换了自动布局。

TLDR:UIView/CALayer 很快。自动布局不是。

【讨论】:

【参考方案3】:

我从未见过任何针对 iOS 的此类推荐。与往常一样,您应该尽可能简单地实现代码和视图层次结构。之后,衡量你的表现并在需要时进行调整。尽可能避免过早优化。

【讨论】:

是的,过早的优化不好,但要注意 @nehz 是的,正如@Neal 所说,UIView/CALayer 有 OpenGL 支持,绘图性能非常好。

以上是关于iOS 中深度嵌套的视图层次结构可以吗?的主要内容,如果未能解决你的问题,请参考以下文章

iOS CALayer.zPosition 不会超越视图层次结构吗?

如何以模态方式将视图添加到不在视图层次结构中的另一个视图 iOS

SwiftUI 视图层次结构中较高的动画覆盖嵌套动画

如何在 Xcode 视图层次结构中拥有深度视图?

视图不在窗口层次结构中

iOS 视图与视图层次结构(内容根据iOS编程)