[英]Programmaticaly setting color of a buttons border in iOs7
我正在使用此代码为UIButtons设置边框(在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];
}
希望这对您有所帮助。
您可以将按钮本身添加为UIControlEvents
目标。 这应该在您的类别内起作用,只需对按钮调用一次setupButton
。
- (void)setupButton{
self.layer.borderWidth = borderWidth;
[self makeNormalState:self];
[self addTarget:self action:@selector(makeHighlightedState:) forControlEvents:UIControlEventTouchDown];
[self addTarget:self action:@selector(makeNormalState:) forControlEvents:UIControlEventTouchUpInside];
[self addTarget:self action:@selector(makeNormalState:) forControlEvents:UIControlEventTouchUpOutside];
}
- (void)makeNormalState:(UIButton*)sender{
sender.layer.borderColor = normalStateColor.CGColor;
}
- (void) makeHighlightedState:(UIButton*)sender{
sender.layer.borderColor = highlightedStateColor.CGColor;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.