禁用UIButton不褪色或灰色
在我的iPhone应用程序中,我有一个在Interface Builder中创build的UIButton。 我可以成功启用和禁用它像这样在我的代码…
sendButton.enabled = YES;
要么
sendButton.enabled = NO;
但是,button的外观总是一样的! 它不褪色或灰色。 如果我尝试点击它,但是按预期启用或禁用。 我错过了什么吗? 它不应该看起来褪色或灰色?
谢谢
你可以使用下面的代码:
sendButton.enabled = YES; sendButton.alpha = 1.0; or sendButton.enabled = NO; sendButton.alpha = 0.5;
只是改变状态configuration禁用和select你想要的,背景图像为禁用状态
另一种select是将文本颜色(例如浅灰色)更改为禁用状态。 在故事板编辑器中,从“状态configuration”popup式button中select“禁用”,然后使用“文本颜色”popup式button更改文本颜色。 在代码中,使用-setTitleColor:forState:消息。
(我意识到这是一个较旧的post,但我认为别人可能会喜欢这个选项)
尝试为UIControlStateDisabled
(禁用的灰色图像)和UIControlStateNormal
(正常图像)设置不同的图像,使button为您生成禁用状态。
如果您使用文本button,则可以将其放入viewDidLoad实例方法中
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
例:
[self.syncImagesButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];
你可以使用UIButton
属性adjustsImageWhenDisabled
(@property (nonatomic) BOOL adjustsImageWhenDisabled)
例如:
Button.adjustsImageWhenDisabled = false
你可以使用这两个第一个答案,并将是一个更好的结果。
在属性检查器中(当你selectbutton时),将State Config(状态configuration)更改为Disabled(禁用),以设置禁用时将出现的新图像(删除Content-> Enabled检查中的标记以使其禁用) 。
而当你改变状态为启用时,图像将从这个状态加载。
将alpha逻辑添加到这是一个很好的细节。
问候!
这是一个相当古老的问题,但有一个很简单的方法来实现这一点。
myButton.userInteractionEnabled = false
这只会禁用任何触摸手势,而不会改变button的外观
我被困在同样的问题。 设置阿尔法不是我想要的。
UIButton
有“ 背景图像 ”和“ 背景颜色 ”。 对于图像, UIButton
有一个属性为
@property (nonatomic) BOOL adjustsImageWhenDisabled
当button被禁用时,背景图像被点亮。 对于背景颜色,设置alpha,Ravin的解决scheme,工作正常。
首先,你必须检查你是否有未经检查的“禁用调整图像”框下的实用程序属性。
然后,检查这个button的背景颜色。
(希望这有帮助,这是一个旧的post; Xcode中的东西可能已经改变了)。
在Swift中 :
previousCustomButton.enabled = false previousCustomButton.alpha = 0.5
要么
nextCustomButton.enabled = true nextCustomButton.alpha = 1.0
如果UIButton
处于与selected
和disabled
结合的状态,则状态为UIControlStateSelected | UIControlStateDisabled
UIControlStateSelected | UIControlStateDisabled
。
所以,这是国家需要调整
[button setTitleColor:color UIControlStateSelected | UIControlStateDisabled]; [button setImage:image forState:UIControlStateSelected | UIControlStateDisabled];
下面的方法是子类UIButton
。
@implementation TTButton - (void)awaeFromNib { [super awakeFromNib]; //! Fix behavior when `disabled && selected` //! Load settings in `xib` or `storyboard`, and apply it again. UIColor *color = [self titleColorForState:UIControlStateDisabled]; [self setTitleColor:color forState:UIControlStateDisabled]; UIImage *img = [self imageForState:UIControlStateDisabled]; [self setImage:img forState:UIControlStateDisabled]; } - (void)setTitleColor:(UIColor *)color forState:(UIControlState)state { [super setTitleColor:color forState:state]; // if (UIControlStateDisabled == state) { [super setTitleColor:color forState:UIControlStateSelected | state]; [super setTitleColor:color forState:UIControlStateHighlighted | state]; } } - (void)setImage:(UIImage *)image forState:(UIControlState)state { [super setImage:image forState:state]; if (UIControlStateDisabled == state) { [super setImage:image forState:UIControlStateSelected | state]; [super setImage:image forState:UIControlStateHighlighted | state]; } } @end
在Swift> 3.0中创build一个扩展,而不是每个button本身
extension UIButton { override open var isEnabled : Bool { willSet{ if newValue == false { self.setTitleColor(UIColor.gray, for: UIControlState.disabled) } } }
#import "UIButton+My.h" #import <QuartzCore/QuartzCore.h> @implementation UIButton (My) -(void)fade :(BOOL)enable{ self.enabled=enable;// self.alpha=enable?1.0:0.5; } @end
。H:
#import <UIKit/UIKit.h> @interface UIButton (My) -(void)fade :(BOOL)enable; @end