如何正确使用UIColor作为属性

时间:2013-04-23 06:07:48

标签: objective-c properties uicolor

为什么我的颜色属性始终为null

@interface StreamingMediaControlButton : UIButton

@property (strong, nonatomic) UIColor *color;

@end

@implementation StreamingMediaControlButton

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        _color = [UIColor whiteColor];
    }
    return self;
}

- (void)drawRect:(CGRect)rect
{
    NSLog(@"color: %@", self.color);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, self.color.CGColor);
}
@end

2 个答案:

答案 0 :(得分:3)

您之前的评论说您正在使用界面构建器,这意味着在按钮上调用了不同的init方法。你需要实现:

- (id)initWithCoder:(NSCoder *)decoder
{
    if ((self = [super initWithCoder:decoder])) {
        // setup code
    }

    return self;
}

通常最好同时实施initWithCoder:initWithFrame:并让他们都调用共享设置代码的commonInit方法。

答案 1 :(得分:0)

尝试使用Color RGB值而不是直接定义更有效的颜色。