禁用时更改UIButton边框

时间:2018-03-01 08:17:15

标签: ios objective-c

我希望在按钮被禁用时隐藏按钮的边框。启用后,我设置边框如下:

_btnInit.layer.borderWidth = 1;
_btnInit.layer.borderColor = [[UIColor grayColor]CGColor];

当它被禁用时,我想删除边框。 enter image description here

就像在图片中一样。左侧处于禁用状态,右侧处于正常状态。

4 个答案:

答案 0 :(得分:7)

子类UIButton并覆盖isEnabled属性,如下所示,

override var isEnabled: Bool {
    didSet {
        if isEnabled {
            self.layer.borderColor = UIColor.black.cgColor
            self.layer.borderWidth = 1.0
        } else {
            self.layer.borderWidth = 0.0
        }
    }
}

答案 1 :(得分:1)

如果您使用Swift,请使用'PPL的答案,如果您想要它的目标-c它非常相似:

1)创建一个UIButton子类,如:

#import <UIKit/UIKit.h>

@interface BorderedDisabledButton : UIButton

@end

2)覆盖setEnabled文件

中的.m属性
- (void)setEnabled:(BOOL)enabled {
    [super setEnabled:enabled];

    if (enabled) {
        self.layer.borderWidth = 0.0;
    } else {
        self.layer.borderColor = [UIColor redColor].CGColor;
        self.layer.borderWidth = 1.0;
    }
}

答案 2 :(得分:0)

如果启用或禁用按钮,则根据条件更改边框,并设置按钮边框,如下所示:

if ([btnInit isEnabled]) {
  _btnInit.layer.borderWidth = 1;
  _btnInit.layer.borderColor = [[UIColor grayColor]CGColor];
} else {
  _btnInit.layer.borderWidth = 0;
  _btnInit.layer.borderColor = [[UIColor clearColor] CGColor];
}

答案 3 :(得分:0)

试试这个

启用

_btnInit.layer.borderWidth = 1;
_btnInit.layer.borderColor = [[UIColor grayColor]CGColor];

禁用

_btnInit.layer.borderWidth = 0;
_btnInit.layer.borderColor = [[UIColor clearColor]CGColor];