【问题标题】:Who should customize appearance of a CustomUIView谁应该自定义 CustomUIView 的外观
【发布时间】:2013-10-08 11:28:35
【问题描述】:

我想在这里问的是一个设计问题。

我有一个 CustomUIViewController 来处理控制器视图中的一些子视图。

这两个视图在逻辑上是截然不同的,具有不同的作用:

  • 第一个子视图包含用户可以使用的 UIControl 对象 与(游戏控制)交互。
  • 第二个子视图只显示游戏进度。

问题是我需要有多个 Game Controls 实现(比如说两个,可以在图形上完全不同),并让用户选择他喜欢的一个。

我的问题是:将 CustomUIViewController 的代码与两个游戏控件实现(包括用于自定义每个控件外观的图形资源)结合起来是否被认为是一种好习惯?或者如果游戏控制视图的外观设置由另一个对象(工厂、委托或类似的东西)处理会更好吗?

您能否提出任何有助于处理此类用例的模式?

提前谢谢你。

【问题讨论】:

  • 控制器通常会控制它。您也可以让控制器监控用户选择的变化,然后在游戏控制视图上设置一个标志。该标志指示在显示时使用哪些图形(并且标志更改会导致重新显示/更改图像资源),具体取决于您当前如何分配有关图像名称的知识。
  • @Wain:哪一个被认为是了解图像名称的最佳实践:将其嵌入到 CustomUIViewController 中,或者将其放入专门的 Game Control 视图中?
  • 我会选择知道图像名称的控制器。我不会说两者都是一个艰难的最佳实践。只要结构合理且一致,视图就可以指定其默认图像并为用户(控制器)提供更改它们的选项。如果视图呈现几种显示样式,那么它可以管理所有这些样式。想想UITableView 以及它提供了什么......

标签: ios uiview uiviewcontroller factory


【解决方案1】:

我建议您为要添加到CustomUIViewController 的两个视图创建单独的类。 然后,您可以在相应的类中添加您想要的任何组件和功能。 代码很容易理解,如果您希望向特定的子视图添加一些扩展功能,您也会感到轻松。 不要把所有东西都放在同一个类中,你可能最终会搞砸。

如果可能,请始终尝试关注MVC Architecure

【讨论】:

  • 我完全同意你的看法。两个 Game Control 视图将是两个不同的类。它们的内部结构将完全不同,但每个 Game Control 类将向 CustomUIViewController 公开相同的接口。但是谁应该知道图像名称呢?我应该将它嵌入到专门的 Game Control 视图中还是嵌入到包含它的 CustomUIViewController 中?
【解决方案2】:

将您尝试使用的 2 个 UIView 子类化,以便您可以拥有 2 个自定义视图,而不是添加到您的视图控制器中。

通过这样做,您可以获得在自定义 UIView 实现上获取触摸事件的好处,这将是一种更简单的方法,然后将所有内容放在同一个类中。

【讨论】:

    猜你喜欢
    • 2017-07-05
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多