iOS中不同按钮的最佳方法?

时间:2014-01-17 12:04:55

标签: ios objective-c cocoa-touch cocoa-design-patterns

3个按钮,很多实现,在一个巨大的项目中。时尚的Objective-c程序员如何解决这个问题?

这是一个关于设计模式的问题,但我认为这是相关的,我很难找到答案。

为了简化问题,假设我的应用程序中有3种按钮,我会使用很多。有VeryImportantButtonImportantButtonNotVeryImportantButton,风格各异:边框,边角,颜色等。

我不想在任何地方复制粘贴

UIButton *mybutton = [[UIButton alloc] initWithFrame:frame];
[myButton setBackGroundColor:[UIColor redColor];
[myButton.layer setBorderWidth:2.0];
[…]

我可以看到三种解决方案:

1 /子类。 3个按钮是UIButton的子类,参数将在实现文件中设置。这样我只需要分配初始化所需的按钮。

ImportantButton *mybutton = [[ImportantButton alloc] initWithFrame:frame];

2 /一些辅助类(公共类方法,单例等)

UIButton *mybutton = [[UIButton alloc] initWithFrame:frame];
[ButtonImportantnessManager applyVeryImportantStyleToButton:myButton];

3 /在UIButton上创建一个类别

#import "UIButton+Importantness.h"

UIButton *mybutton = [[UIButton alloc] initWithFrame:frame];
[myButton applyVeryImportantStyle];

我无法确定其中一个解决方案是否优于另一个解决方案,以及哪个解决方案。

目标是拥有一个可换肤的应用程序,因此IB仅用于布置UI元素,而不是用于设置它们的样式。

我希望这是一个有效的问题。谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

您可以全局设置UIButtons的属性。像这样:

[[UIButton appearance] setBackgroundColor:<#(UIColor *)#>];

所以,你需要三个特定类型的按钮,创建3个UIButton子类,全局设置它们的属性,如上所述&amp;在您的应用中经常使用它。

如果这不是你想要的,请告诉我。

答案 1 :(得分:0)

我已经看到了许多带有自定义按钮的开源代码,并且大部分时间都可以使用你指定的第一个方法,因为子类化不是非常适合做UI类型的东西,因为它在每个场景中都不能很好地工作。只需创建按钮并添加所需的属性,添加到子视图是最好的方法。