我有一个自定义UIButton
子类,我想更改边框颜色,具体取决于此状态是UIControlStateNormal
还是UIControlStateDisabled
最初在我的awakeFromNib
中,我设置了所有默认值
[self setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];
[self setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
self.layer.borderColor = [UIColor redColor].CGColor;
self.layer.borderWidth = 1.0;
现在我想要的是当按钮的状态为UIControlStateDisabled
时,它具有与该状态的titleColor相同的边框颜色,因此在这种情况下[UIColor grayColor]
我最初的尝试是覆盖titleForState
,如此
- (NSString *)titleForState:(UIControlState)state
{
if (state == UIControlStateDisabled)
{
self.layer.borderColor = [UIColor grayColor].CGColor;
}
else
{
self.layer.borderColor = [UIColor redColor].CGColor;
}
return [super titleForState:state];
}
有人有任何建议吗?
答案 0 :(得分:2)
您在设置新标题时设置边框颜色,而不是在更改按钮状态时设置边框颜色。您应该覆盖setEnabled:方法,因此每次通过此方法将状态更改为禁用/启用时,边框将会更改:
-(void)setEnabled:(BOOL)enabled
{
[super setEnabled:enabled];
if (enabled)
{
self.layer.borderColor = [UIColor redColor].CGColor;
}
else
{
self.layer.borderColor = [UIColor grayColor].CGColor;
}
}
删除你的titleForState:方法并尝试这个。 希望这会有所帮助。