如何在我的iPhone应用程序中标准化外观

时间:2011-10-10 07:34:32

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

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

self.view.backgroundColor = [UIColor groupTableViewBackgroundColor]

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

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

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

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

因此。你会如何标准化你的外观和感觉?

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

为什么不为所有视图创建超级课程? 设置您需要的所有属性,然后使您创建的每个新视图都继承自此超类。 让我们假设您创建一个名为“PreDesignedUIview”的UIView,其设计内部就像背景颜色等。

然后,无论何时创建新视图,都应设置:

@interface NewView : PreDesignedUIview

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

这有什么问题?

答案 3 :(得分:0)

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