【问题标题】:How to standardize look and feel across my iphone app如何标准化我的 iPhone 应用程序的外观和感觉
【发布时间】:2011-10-10 16:37:06
【问题描述】:

我试图弄清楚如何在我的 iPhone 应用程序中创建标准的外观和感觉。 因此,如果我想更改 UIView 的背景,我通常会在 all 我的视图控制器中执行类似的操作:

self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]

当您要管理 50 个 UIView 时,这变得非常多余且容易出错。当然,客户每 3 天左右更改一次他们想要的背景图像。所以我的下一个选择是创建帮助文件,例如:

@implementation GuiDefaultsUIView
+ (void) setDefaultProperties:(UIView *) view {
    view.backgroundColor = [UIColor groupTableViewBackgroundColor];

然后手动调用[GuiDefaultsUIView setDefaultProperties:self.view]; 从每个视图控制器。这行得通,这就是我现在的做法,但这意味着对于每个 UI 对象(例如 UIButton、UITableView),我需要为每个类的每个实例调用一个类似的函数。

我想做的是将其标准化,以便获得默认的外观和感觉,我可以在需要时覆盖它。我考虑过子类化UIView/UIButton/UITableView,但这似乎不是正确的方法。添加类别会很好,但我认为覆盖默认方法(例如:init)也不是正确的方法。

所以。你会如何标准化你的外观和感觉?

【问题讨论】:

  • 这与What is the recommended method of styling an iOS app 是同一个问题,因为您正在寻找一种间接方式来从一个共同点设置多个元素的样式。我觉得这个问题没有明确的答案。
  • @Jano 我不会说我正在寻找一个明确的答案。更像是最佳实践。不过感谢您的链接。这有点帮助。

标签: iphone objective-c user-interface look-and-feel


【解决方案1】:

这是一个相对简单的;) 例如,您只需创建一个名为 MyVievController 的自定义 UIViewController 子类,然后从该类继承 ViewControllers。 然后在 MyViewController 的 init 和 viewWillAppear 等中,你可以做你的自定义,只要确保在你的子类中调用 super。 您可以对 UITableViewControllers 甚至 UIViews 执行相同的操作,以自定义绘图或设置标准属性。

我们一直在我们的应用程序中这样做,而且效果很好。在某些情况下,类别也很好,例如您可以覆盖 UINavigationBar 的 drawRect-Method。

【讨论】:

    【解决方案2】:

    你可以做的(我已经做过并且在一些项目中看到过)是创建一个类来存储所有常量。然后,当您需要它们时,只需导入它们并酌情使用。

    【讨论】:

      【解决方案3】:

      为什么不为所有视图创建一个 Super 类? 在那里设置你需要的所有属性,然后让你创建的每个新视图都继承自这个超类。 假设您创建了一个名为“PreDesignedUIview”的 UIView,其中包含您的设计,例如背景颜色等。

      那么每当你创建一个新视图时你应该设置:

      @interface NewView : PreDesignedUIview
      

      这会自动将您的设计从 PreDesignedUIview 设置为新视图。

      这有什么问题?

      【讨论】:

        【解决方案4】:

        创建一个实用程序类来存储您的背景颜色和图像。然后使用这些方法来获取图像/颜色。当您应该更改时,不要为每个文件调用不同的方法,而是更改从实用程序类中的方法返回的颜色。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-04-03
          • 2010-12-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多