我正试图弄清楚如何在我的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)也是正确的方法。
因此。你会如何标准化你的外观和感觉?
答案 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类中的方法返回的颜色。