我正在尝试使用以下代码使UIButton看起来已禁用:
btnYourButton.alpha = 0.6f;
btnYourButton.enabled = NO;
启用制作时(当然看起来已启用)
btnYourButton.alpha = 1.0f;
btnYourButton.enabled = YES;
是否有任何方法可以在单个语句中执行这两个操作(使UIButton禁用/启用并使其看起来禁用/启用)?
答案 0 :(得分:4)
或者您可以尝试继承UIButton,例如:
文件MyKindOfButton.h
#import <UIKit/UIKit.h>
@interface MyKindOfButton : UIButton
@end
文件MyKindOfButton.m
#import "MyKindOfButton.h"
@implementation MyKindOfButton
- (void)setEnabled:(BOOL)enabled {
[super setEnabled: enabled];
if (enabled) {
self.alpha = 1.0f;
} else {
self.alpha = 0.6f;
}
}
@end
答案 1 :(得分:1)
我知道这是一个非常古老的问题,但这是一个非常好的解决方案。只需创建一个UIColor类别并添加此方法。
+ (UIImage *)imageWithColor:(UIColor *)color size:(CGSize)size
{
UIGraphicsBeginImageContext(size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, color.CGColor);
CGContextFillRect(context, (CGRect){.size = size});
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
+ (UIImage *)imageWithColor:(UIColor *)color
{
return [UIImage imageWithColor:color size:CGSizeMake(1, 1)];
}
现在您可以将backgroundImage设置为您想要的任何颜色,它将自动为您处理禁用外观。
[button setTitleColor:[UIColor someColor] forState:UIControlStateNormal];
答案 2 :(得分:0)
另一个选项是更改禁用状态的文本颜色(例如浅灰色)。在Storyboard编辑器中,从State Config弹出按钮中选择Disabled,然后使用Text Color弹出按钮更改文本颜色。在代码中,使用-setTitleColor:forState:message。
(我意识到这是一篇较老的帖子,但我认为其他人可能会喜欢这个选项)