不是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