【发布时间】:2014-01-24 17:57:24
【问题描述】:
我想知道哪种方法可以更好地实现设计为具有复杂子视图层次结构的视图,例如左侧有一个子视图,右侧有一个子视图的视图,左侧子视图有 X 个子视图在一列中有子视图,右侧子视图在一行中有 Y 个子视图。 (X 和 Y 不同)
两种实现方式:
- 自定义左右视图(即UIView子类),自定义左子子视图,自定义右子子视图,根视图只处理自定义左右视图,他们配置自己的子子视图
- 只有一个视图,左侧有一列视图(即左视图的子视图),右侧有一排视图(即右视图的子子视图)
第一种方法: 优点:
- 干净的层次结构意味着更好的可维护性。
- 职责分布在子视图中,因此每个视图中的复杂性更少
缺点:
- 嵌套子视图层次结构
- 可能由于自动布局而性能更差
- 委托链比较困难,把每个子视图看成一个按钮,需要执行某些动作,自定义视图需要将动作一直委托回根视图
第二种方法: 优点:
- 更少的子视图
- 可能有更好的表现
- 与第一种方法相比,委托链更简单
缺点:
- 难以维护/修改,因为所有子视图都在一个级别,尤其是使用自动布局时
- 代码库混乱,因为所有视图都在一个基础视图中
看起来第一种方法更好,但它仍然有几个缺点,是否有一种全新的方法可以解决所有缺点?
【问题讨论】:
标签: ios objective-c uiview autolayout