我希望在按钮被禁用时隐藏按钮的边框。启用后,我设置边框如下:
_btnInit.layer.borderWidth = 1;
_btnInit.layer.borderColor = [[UIColor grayColor]CGColor];
就像在图片中一样。左侧处于禁用状态,右侧处于正常状态。
答案 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];