我应该覆盖子类形式父类(UIButton)中的属性

时间:2016-10-11 02:54:43

标签: ios objective-c uibutton

我想创建一个自定义按钮,如果我没有为按钮设置任何颜色,这将帮助我将所有按钮背景颜色更改为默认红色。
所以我喜欢这个并且运作良好

在.h文件中

我有

@interface ITSButton : UIButton
@property(nonatomic, strong) UIColor *backgroundColor;
@property(nonatomic, strong) UIColor *onPressBackgroundColor;
@end
<。> in .m fie

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

但此处backgroundColor的问题已经是UIButton类的属性。如果我在ITSButton中覆盖它,它是否良好且清晰?

如果我不覆盖backgroundColor属性,我就无法使用函数(UIColor *)backgroundColor,因此我无法将默认背景设置为红色

1 个答案:

答案 0 :(得分:1)

  

如果我不覆盖myRDD.repartition(50).map(t -> ObjectMapperFactory.OBJECT_MAPPER_MIXIN.writeValueAsString(t)) .saveAsTextFile(outputPath, GzipCodec.class); 属性,我就无法使用函数backgroundColor,因此我无法将默认背景设置为红色

是的,你可以,我认为实现这一点可能是你进退两难的关键。只留下(UIColor*)backgroundColor!它有一项重要的工作要做。相反,实现子类的初始值设定项,将设置此按钮的背景颜色设置为红色。您应该为所有可能的初始化器执行此操作;最有可能的是backgroundColorinitWithFrame:

结果是这个类的所有按钮,以及这个类的任何子类的所有按钮,默认情况下都是红色 ,这就是你想要的。要更改它,您只需设置按钮的背景颜色,就像现在使用任何按钮一样。

如果您还不知道有关如何执行该规则的规则,请不要忘记阅读有关如何覆盖子类中的初始值设定项的文档。