2

为什么我的颜色属性总是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
4

2 回答 2

3

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

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

    return self;
}

通常,实现两者initWithCoder:initWithFrame:让它们都调用commonInit共享设置代码所在的方法是一种很好的做法。

于 2013-04-25T11:20:12.750 回答
0

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

于 2013-04-23T09:56:10.663 回答