gpt4 book ai didi

ios - UIView 自动布局 : hierarchy of subviews VS minimum views hierarchy?

转载 作者:行者123 更新时间:2023-11-29 03:21:57 28 4
gpt4 key购买 nike

我想知道哪一种更好的方法来实现一个被设计为具有复杂 subview 层次结构的 View ,比如说一个 View ,左侧有一个 subview ,右侧有一个 subview ,左侧 subview 有 X 个 subview 一列中有一个 subview ,右 subview 在一行中有 Y 个 subview 。(X 和 Y 不同)

两种实现方式:

  1. 自定义左右 View (即UIView子类)、自定义左子 subview 、自定义右子 subview , Root View 只处理自定义左右 View ,并且它们配置其子 subview
  2. 只有一个 View ,左侧为一列 View (即左 View 的子 subview ),右侧为一行 View (即右 View 的子 subview )

第一种方法:优点:

  1. 清晰的层次结构意味着更好的可维护性。
  2. 职责分布在 subview 中,因此每个 View 中的复杂性更少

缺点:

  1. 嵌套 subview 层次结构
  2. 由于自动布局,可能性能较差
  3. 委托(delegate)链比较困难,将每个 subview 视为需要执行某些操作的按钮,自定义 View 需要将操作一直委托(delegate)回 Root View

第二种方法:优点:

  1. 减少 subview
  2. 可能有更好的性能
  3. 与第一种方法相比,委托(delegate)链更简单

缺点:

  1. 难以维护/修改,因为所有 subview 都位于一个级别,尤其是使用自动布局
  2. 困惑的代码库,因为所有 View 都在一个基本 View 中

看起来第一种方法更好,但它仍然有几个缺点,是否有一种全新的方法来实现它来应对所有缺点?

最佳答案

两个 subview (左列和右列)必须有共同点,否则您不会同时显示它们。因为它们具有一般关系,所以我对选项 2 没有任何疑问。话虽如此,我仍然更喜欢选项 1,原因如下:

  • 清晰的层次结构更易于理解和维护。
  • 分布式 View 逻辑更容易理解,并且可以使您的类更小(这也意味着在其他地方更容易重用 subview )。
  • 可能表现更差”是一个很大的可能。您应该使用 Instruments 或使用 NSDatetimeIntervalSinceNow 进行实际测量。只要约束始终安装在 nearest common ancestor你应该没问题。
  • 委托(delegate)和目标/操作不会那么糟糕self.firstView.subView.button.target = self

所有支持的硬件上可接受的性能应该是主要决定因素。可维护性应该紧随其后。

采用第一种方法。

关于ios - UIView 自动布局 : hierarchy of subviews VS minimum views hierarchy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20965066/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com