不是UIButton在启用时应该变成灰色/灰色=否?UIButton不会变灰
我在blackbackground上有一个简单的UIButton(没有自定义图像,没有自定义任何东西,只是用IB拖动它,改变大小和标题)。
当我以编程方式将其设置为禁用时,它仍然是白色的!
现在我正在使用一个小的愚蠢的解决方法:隐藏blackbg 0,5阿尔法UIView在隐藏的按钮顶部=否当我需要禁用按钮...但我想设置按钮正确...
有什么想法?
不是UIButton在启用时应该变成灰色/灰色=否?UIButton不会变灰
我在blackbackground上有一个简单的UIButton(没有自定义图像,没有自定义任何东西,只是用IB拖动它,改变大小和标题)。
当我以编程方式将其设置为禁用时,它仍然是白色的!
现在我正在使用一个小的愚蠢的解决方法:隐藏blackbg 0,5阿尔法UIView在隐藏的按钮顶部=否当我需要禁用按钮...但我想设置按钮正确...
有什么想法?
没有办法制作UIButton“grayer”。但是你可以用那招:
UIButton *myButton;
myButton.alpha = 0.4;
myButton.enabled = NO;
所以你的UIButton貌似不可用;)
还有另一种方式,而不必阿尔法整个按钮:当您设置的
[startButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];
然后启用属性为NO,按钮的文本将自动变灰。
我偶然发现了这个问题,苹果公司发布了一项新UIKit User Interface Catalog在iOS的7
处理按钮在回答你的问题,UIButton Class现在公开了一个名为adjustsImageWhenDisabled属性,这是“一个布尔值,确定当按钮被禁用时图像是否改变。“
如果此adjustsImageWhenDisabled属性设置为“YES”,则禁用该按钮时图像会变暗,默认值为YES。
我面临同样的问题,因为我设置了背景颜色。
我删除了背景颜色并将其仅设置为UIControlStateNormal
,启用/禁用的默认行为开始出现。
如果要设置背景色,而不是像试试这个类别的UIColor转换成的UIImage:
从here复制:
+ (UIImage *)imageWithColor:(UIColor *)color
{
CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
然后使用此:
[self.loginButton setBackgroundImage:[UIImage imageWithColor:greenColor] forState:UIControlStateNormal];
self.loginButton.enabled = NO;
设置作为背景的颜色。现在,当您启用/禁用时,应该会出现灰色效果。
只需制作一个类似以下的UIButton类别,并在要使用它的类中导入#import "UIButton+StateColors.h"
即可。
.H
#import <UIKit/UIKit.h>
@interface UIButton (StateColors)
-(void)makeDisabled:(BOOL)flag;
@end
。米
#import "UIButton+StateColors.h"
#define ENABLED_BUTTON_ALPHA 1
#define DISABLED_BUTTON_ALPHA 0.3
@implementation UIButton (StateColors)
-(void)makeDisabled:(BOOL)flag {
self.enabled = !flag;
self.alpha = flag ? DISABLED_BUTTON_ALPHA : ENABLED_BUTTON_ALPHA;
}
@end
而且使用这样的......
[self.emailBtn makeDisabled:NO];
[self.printBtn makeDisabled:YES];
这是一个通用的解决方案,我希望......
是,由于UIButton的是一个黑色的观点之上,改变alpha给出了和我的黑色UIView完全相同的效果,但这是一个更加聪明和简单的解决方案,应该首先想到 - 我正在切换;)谢谢 – xfze 2011-06-10 16:37:06
不客气。 – 2011-06-10 16:38:01