iphone - guideline - xcode add label to view




UIButton non si oscurerĂ  (4)

L'UIButton non dovrebbe diventare grigiastro / grigio quando è abilitato = NO?

Ho un semplice UIButton su un blackbackground (nessuna immagine personalizzata, niente personalizzato, semplicemente trascinato con IB e cambiato dimensione e titolo).

E quando lo imposto programmaticamente per diventare disabilitato rimane bianco come l'inferno!

Per ora sto usando una piccola stupida soluzione: hidden blackbg 0,5 alfa UIView in cima al pulsante che diventa nascosto = NO quando ho bisogno di disabilitare il pulsante ... ma vorrei impostare il pulsante correttamente ...

qualche idea?


È sufficiente creare una categoria UIButton come segue e importare #import "UIButton+StateColors.h" nelle classi in cui si desidera utilizzarlo.

.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

E usalo così ...

[self.emailBtn makeDisabled:NO];
[self.printBtn makeDisabled:YES];

È una soluzione universale, spero ...


Affronto lo stesso problema perché avevo impostato il colore di sfondo.

Ho rimosso il colore di sfondo e l'ho impostato solo per UIControlStateNormal e UIControlStateNormal iniziato a comparire il comportamento predefinito per l'abilitazione / disabilitazione.

Se stai impostando il colore di sfondo invece dell'immagine prova questa categoria per convertire UIColor in UIImage:

copiato da 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;
}

quindi usa questo:

[self.loginButton setBackgroundImage:[UIImage imageWithColor:greenColor] forState:UIControlStateNormal];
self.loginButton.enabled = NO;

per impostare il colore come sfondo. Ora quando si abilita / disabilita, dovrebbe apparire l'effetto grigio.


Mi sono imbattuto in questa domanda e Apple ha pubblicato un nuovo Catalogo dell'interfaccia utente UIKit per lavorare con i pulsanti in iOS 7.

In risposta alla tua domanda, la classe UIButton espone ora una proprietà chiamata adjustsImageWhenDisabled, che è "un valore booleano che determina se l'immagine cambia quando il pulsante è disabilitato."

Se regola la proprietà ImageWhenDisabled su "YES, l'immagine viene scurita quando il pulsante è disabilitato." Il valore predefinito è SÌ. "


Non c'è modo di rendere un UIButton "più grigio". Ma puoi usare quel trucco:

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

Quindi il tuo UIButton sembra inutilizzabile;)





uibutton