我为圆形自定义边框创建了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的其他控件没有相同的行为:
我该如何处理?
非常感谢
答案 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];
}