2016-10-11 49 views
0

我想创建一个自定义按钮,如果我不为该按钮设置任何颜色,这将帮助我将所有按钮背景颜色更改为默认红色。
所以我喜欢这一点,它在.h文件中运作良好我是否应该重写子类窗体父类(UIButton)中的属性

@interface ITSButton : UIButton 
@property(nonatomic, strong) UIColor *backgroundColor; 
@property(nonatomic, strong) UIColor *onPressBackgroundColor; 
@end 

在.M FIE

-(UIColor *)backgroundColor 
{ 
    if(!_backgroundColor){ 
     _backgroundColor = [UIColor redColor]; 
    } 
    return _backgroundColor; 
} 

但这里的问题backgroundColor已经财产UIButton类。如果我在ITSButton中覆盖它,它是否好而清楚?

如果我不重写backgroundColor财产,我不能使用功能(UIColor *)backgroundColor,所以我不能设置默认背景为红色

回答

1

如果我不重写backgroundColor财产,我可以不使用的功能(UIColor*)backgroundColor,所以我不能设置默认背景为红色

当然可以,我认为意识到这可能是关键的窘境。独自离开backgroundColor!它有一项重要的工作要做。相反,执行初始化程序你的子类设置这个按钮的背景颜色为红色。你应该为所有可能的初始化方法做到这一点;两个最有可能的是initWithFrame:initWithCoder:

结果是此类的所有按钮以及此类的任何子类的所有按钮都将默认为,这是您想要的。要改变这一点,你只需设置按钮的背景颜色,就像现在使用任何按钮一样。

不要忘记阅读有关如何重写子类中的初始化程序的文档,如果您还不知道如何执行它的规则。

+0

我明白你的解决方案,所以我的问题的答案是“我不应该重写属性backgroundColor”吧? –

+0

没错。由于初始化的方式,只需将按钮_be_设为红色即可。 – matt

相关问题