iphone - UIButton ग्रे नहीं होगा




ios (4)

क्या सक्षम नहीं होने पर UIButton ग्रे-ग्रिश / ग्रायर बनने वाला है?

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

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

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

कोई विचार?


UIButton को "ग्रायर" बनाने का कोई तरीका नहीं है। लेकिन आप उस ट्रिक का उपयोग कर सकते हैं:

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

तो आपका UIButton अनुपयोगी जैसा दिखता है;)


केवल उन वर्गों की तरह एक UIButton श्रेणी #import "UIButton+StateColors.h" और उन कक्षाओं में #import "UIButton+StateColors.h" आयात करें, जहाँ आप इसका उपयोग करना चाहते हैं।

#import <UIKit/UIKit.h>

@interface UIButton (StateColors)

-(void)makeDisabled:(BOOL)flag;

@end

.m

#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];

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


मैं इस सवाल पर हुआ और Apple ने iOS 7 में बटन के साथ काम करने के लिए एक नया UIKit यूजर इंटरफेस कैटलॉग प्रकाशित किया है।

आपके प्रश्न के उत्तर में, UIButton Class अब समायोजित करता है, जिसे समायोजन कहा जाता है ImageWhenDisabled, जो "एक बूलियन मान है जो यह निर्धारित करता है कि बटन अक्षम होने पर छवि बदलती है या नहीं"

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


मैं उसी समस्या का सामना कर रहा हूं क्योंकि मैंने पृष्ठभूमि का रंग निर्धारित किया था।

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

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

here से कॉपी किया 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