UIButton自定义边框中的Tintcolor

时间:2014-01-17 17:48:13

标签: objective-c ios7 uibutton tintcolor

我为圆形自定义边框创建了UIButton的子类:

- (void)drawRect:(CGRect)rect
{
    [[self layer] setCornerRadius:CORNER_RADIUS];
    [[self layer] setMasksToBounds:YES];   
    [[self layer] setBorderWidth:1];
    [[self layer] setBorderColor:self.tintColor.CGColor];
    [self.imageView setTintColor:self.tintColor];
}

问题是当出现一个popover时,自定义边框与tintColor的其他控件没有相同的行为:

enter image description here

enter image description here

我该如何处理?

非常感谢

1 个答案:

答案 0 :(得分:6)

在您的UIButton子类中实现tintColorDidChange。 iOS将按钮的tintColor更改为灰色,但图层的borderColor仍然是旧的蓝色。您必须自己更改borderColor,iOS无法知道边框应该像您的色调一样着色。

- (void)tintColorDidChange {
    [super tintColorDidChange];
    [self setNeedsDisplay];
}

使用setNeedsDisplay后,系统会调用drawRect:,这会更新图层颜色。

您也可以使用它:

- (void)tintColorDidChange {
    [super tintColorDidChange];
    [[self layer] setBorderColor:self.tintColor.CGColor];
}