我有四个按钮将在同一场景中以相同的方式设置样式(使用Storyboard)。这是一个简单的样式,需要覆盖一些属性默认值,但似乎不必要地重复为每个单独的按钮设置它。我在想我会创建一个子类,但我读过的很多帖子(特别是在stackoverflow上)警告不要为UIButton这样做(而且我所做的尝试都没有成功)。
希望得到一个关于什么被认为是最佳方法的一般指针。谢谢你的任何建议。
答案 0 :(得分:6)
如果您只定位iOS 5,我强烈建议您观看 WWDC 2011会话视频的 Session 114 - Customizing the Appearance of UIKit Controls 开发人员登录 。
它详细解释了App范围内的样式。
我想修改yujis的想法:在UIButton上使用category来设置按钮
的.h。
@interface UIButton (MyStyling)
-(void)configureMyButtonStyle;
//other methods for more fine-grained control
@end
的.m
@implementation UIButton (MyStyling)
-(void)configureMyButtonStyle
{
[self setBackgroundColor:[UIColor colorWithRed:…]];
[self setTitleColor: [UIColor colorWithRed:…] forState: UIControlStateNormal];
//…
}
@end
现在您可以致电[aButton configureMyButtonStyle]
当然你也可以解析一些参数,以区分几种风格。
-(void)configureMyButtonForStyle:(NSInteger)style
{
if(style == 1){
//…
} else if(style == 2) {
//..
} else {
//fallback style
}
}
使用:
[aButton configureMyButtonForStyle:1];
答案 1 :(得分:4)
子类化在这里看起来有些过分。你可以编写一个方法,在你的一个控制器中按照你想要的方式设置属性,并在每个UIButton
上调用它。
或者您可以随时在IB中按自己喜欢的方式自定义一个按钮,然后复制并粘贴三次。