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 不会超越视图层次结构吗?