2011-06-10 16 views
32

ग्रे नहीं होगा यूआईबटन को सक्षम होने पर ग्रेश/ग्रेर बनने वाला नहीं है = नहीं?UIButton

मेरे पास ब्लैकबैकग्राउंड पर कोई साधारण UIButton है (कोई कस्टम छवियां नहीं, कोई कस्टम कुछ नहीं, बस इसे आईबी के साथ खींच लिया गया है और आकार और शीर्षक बदल गया है)।

और जब मैं इसे प्रोग्रामेटिक रूप से अक्षम करने के लिए सेट करता हूं तो यह नरक के रूप में सफेद रहता है!

अभी के लिए मैं एक छोटे से बेवकूफ कामकाज का उपयोग कर रहा हूं: छिपे हुए बटन के शीर्ष पर छुपा ब्लैकबग 0,5 अल्फा UIView = जब मुझे बटन को अक्षम करने की आवश्यकता है ... लेकिन मैं बटन सेट करना चाहता हूं ठीक से ...

कोई विचार?

उत्तर

40

UIButton "grayer" बनाने का कोई तरीका नहीं है।

[startButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled]; 

इसके बाद जब भी आप सेट: पूरे बटन अल्फा के बिना)

+1

हाँ, के बाद से UIButton, एक काले दृश्य के शीर्ष पर है बदल रहा है अल्फा मेरे काले UIView के समान सटीक प्रभाव देता है, लेकिन यह एक और अधिक चालाक और सरल समाधान है, पहले उस बारे में सोचना चाहिए - मैं स्विच कर रहा हूं;) धन्यवाद – xfze

+0

आपका स्वागत है। –

49

एक और तरीका नहीं है;

UIButton *myButton; 
myButton.alpha = 0.4; 
myButton.enabled = NO; 

तो अपने UIButton व्यर्थ की तरह दिखता है: लेकिन आपको लगता है कि चाल का उपयोग कर सकते सक्षम संपत्ति को नहीं, बटन का टेक्स्ट स्वचालित रूप से भूरे रंग से बाहर हो जाएगा।

1

मैं इस सवाल पर हुआ और एप्पल आईओएस 7.

में बटन के साथ काम करने के लिए अपने प्रश्न के उत्तर में के लिए एक नया UIKit User Interface Catalog प्रकाशित किया है, UIButton Class अब एक संपत्ति adjustsImageWhenDisabled कहा जाता है, जो "एक बूलियन मान है को उजागर करता है कि यह निर्धारित करता है कि बटन अक्षम होने पर छवि बदलती है या नहीं। "

यदि यह समायोजित करता है ImageWhenDisabled प्रॉपर्टी को "हाँ" पर सेट किया गया है, तो बटन अक्षम होने पर छवि गहरा हो जाती है। डिफ़ॉल्ट मान हाँ है। "

0

मुझे एक ही समस्या का सामना करना पड़ा क्योंकि मैंने पृष्ठभूमि रंग सेट किया था।

मैंने पृष्ठभूमि रंग हटा दिया और इसे केवल UIControlStateNormal के लिए सेट किया और सक्षम/अक्षम करने के लिए डिफ़ॉल्ट व्यवहार प्रकट होना शुरू हुआ।

आप छवि के बजाय पृष्ठभूमि रंग सेट कर रहे हैं UIImage करने के लिए UIColor परिवर्तित करने के लिए इस श्रेणी का प्रयास करें:

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; 

स्थापित करने के लिए पृष्ठभूमि के रूप में रंग। अब जब आप सक्षम/अक्षम करते हैं, तो ग्रे प्रभाव प्रकट होना चाहिए।

1

बस यूआईबटन श्रेणी को निम्न की तरह बनाएं और उन वर्गों में #import "UIButton+StateColors.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]; 

यह एक सार्वभौमिक समाधान मुझे आशा है कि है ...