造型UIButtons - 子类?

时间:2012-02-22 21:32:21

标签: objective-c ios cocoa-touch

我有四个按钮将在同一场景中以相同的方式设置样式(使用Storyboard)。这是一个简单的样式,需要覆盖一些属性默认值,但似乎不必要地重复为每个单独的按钮设置它。我在想我会创建一个子类,但我读过的很多帖子(特别是在stackoverflow上)警告不要为UIButton这样做(而且我所做的尝试都没有成功)。

希望得到一个关于什么被认为是最佳方法的一般指针。谢谢你的任何建议。

2 个答案:

答案 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中按自己喜欢的方式自定义一个按钮,然后复制并粘贴三次。