我正在使用此代码为我的 UIButton 设置边框(在 iOs 7 中)。它工作得相当好,但只适用于一个按钮状态。
- (void)setRoundedBorder:(float) radius borderWidth:(float)borderWidth color:(UIColor*)color
{
CALayer * l = [self layer];
[l setMasksToBounds:YES];
[l setCornerRadius:radius];
// You can even add a border
[l setBorderWidth:borderWidth];
[l setBorderColor:[color CGColor]];
}
我如何调整它以便为处于选中/突出显示状态的按钮设置颜色。 PS:编辑添加:此代码(以上)位于 UIButton 的类别内。
我试过这个:
CALayer * l = [self layer];
[l setMasksToBounds:YES];
[l setCornerRadius:radius];
// You can even add a border
[l setBorderWidth:borderWidth];
if (self.state == UIControlStateHighlighted) {
[l setBorderColor:[anotherColor] CGColor]
} else {
[l setBorderColor:[color CGColor]];
}
这是行不通的,因为它在一个类别中,而且显然无法检测到状态变化......
最佳答案
- (void)setRoundedBorder:(float) radius borderWidth:(float)borderWidth color:(UIColor*)color state:(UIControlState*)buttonState
{
CALayer * l = [self layer];
[l setMasksToBounds:YES];
[l setCornerRadius:radius];
// You can even add a border
[l setBorderWidth:borderWidth];
[l setBorderColor:[color CGColor]];
if(buttonState == UIControlStateHighlighted)
[l setBorderColor:[YOURCOLOR CGColor]];
}
或
如果这是您的 UIButton 声明,则像这样添加选择器,
[yourButton addTarget:self action:@selector(highlightButtonBorder:) forControlEvents:UIControlEventTouchDown];
[yourButton addTarget:self action:@selector(unhighlightButtonBorder:) forControlEvents:UIControlEventTouchUpInside];
//Add extra selectors for other states if required as shown above
- (void)highlightButtonBorder:(UIButton*)sender
{
//your extra code goes here
yourButton.layer.borderColor = [[UIColor YOURCOLOR]CGColor];
}
- (void)unhighlightButtonBorder:(UIButton*)sender
{
//your extra code goes here
myButton.layer.borderColor = [[UIColor YOURCOLOR]CGColor];
}
希望对你有帮助。
关于ios - 在 iOS 7 中以编程方式设置按钮边框的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24721123/