ios - 在 iOS 7 中以编程方式设置按钮边框的颜色

标签 ios uibutton

我正在使用此代码为我的 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/

相关文章:

iphone - 在iPad/iPhone模拟器上模拟超过2次触摸

ios - 不断设置新的本地通知 - ios

ios - draw func 不适用于 Storyboard 中的按钮

ios - UIButton 高亮状态仅适用于 .normal -> .selected?

ios - UIbutton 标题上的自定义字体剪裁在单词顶部

ios - 将 UIButton 添加到工具栏 swift 5

ios - 以编程方式在具有约束的按钮上添加图像 (Swift)

ios - 如何从变量访问属性或方法?

ios - 复制 header 部分在 Xcode 的构建阶段中不可见

ios - 上传应用程序更新时无法选择构建