【发布时间】:2013-07-04 12:28:17
【问题描述】:
我正在尝试以最好的方式重构我的代码,我想知道在给定情况下的正确架构是什么。
我想做的事
我所做的非常简单:我有一些自定义的CALayer 子类,它们代表一个交互式 UI 元素。由于 UI 的某些部分是静态的,因此它们被分解为多个层,因此我不想不必要地重绘这些静态元素。现在,这些层作为子层添加到CustomView 类的初始化部分,该类是UIView 的子类。
目前没有对应的CustomViewController 类是UIViewController 的子类,因为当我使用CustomView 时,它包含在UITableViewCell 或a 的一部分中通用 UIViewController 与其他视图,所以我觉得每个 CustomView 实例的另一个 UIViewController 是多余的。
同样重要的是,我在 UIView 类中所做的唯一操作是响应触摸事件并将触摸信息发送到子层,以便 UI 可以相应地更新其外观。我没有覆盖drawRect 方法或类似的方法。
问题
基本上,我想弄清楚我是否应该这样做:
选项 1:
摆脱CustomView 类,创建一个CustomViewController 类作为UIViewController 的子类,并简单地将CALayer 对象添加为CustomViewController 的内置view 的子层属性。
或
选项 2:
我认为 UIViewController 子类是多余的是正确的,所以我应该保留它的原样,并在其中包含 CALayer 对象的 CustomView 类。
我非常感谢您对此提出任何建议。
【问题讨论】:
-
我做的和你过去做的完全一样。我也用 UIViewController 完成了它。只要代码是可维护的和高性能的,那么我想这并不重要。 UIViewController 是(我猜)更“正确”的方法,但它也可能会影响性能,特别是如果你将它放在 UITableViewCell 中并且可能有很多。
-
感谢您的快速回复。很高兴听到我不会采用目前实施的非
UIViewController方式。
标签: ios model-view-controller uiview uiviewcontroller calayer