iphone - guidelines - UIButton no se oscurecerá
menu ios (5)
Hay otra manera sin tener que alfa el botón completo:
[startButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];
Luego, cuando establezca la propiedad habilitada en NO, el texto del botón se atenuará automáticamente.
¿No se supone que UIButton se vuelve grisáceo / gris cuando está habilitado = NO?
Tengo un UIButton simple en un blackbackground (no hay imágenes personalizadas, no hay nada personalizado, simplemente lo arrastré con IB y cambié el tamaño y el título).
Y cuando lo configuro programáticamente para desactivarlo, ¡permanece blanco como el infierno!
Por ahora estoy usando una pequeña y estúpida solución: blackbg oculto 0.5 alpha UIView encima del botón que se oculta = NO cuando necesito deshabilitar el botón ... pero me gustaría configurar el botón correctamente ...
¿Alguna idea?
Me encontré con esta pregunta y Apple ha publicado un nuevo catálogo de interfaz de usuario UIKit para trabajar con botones en iOS 7.
En respuesta a su pregunta, la clase UIButton ahora expone una propiedad llamada ajustadaDisturbiosDisparados, que es "un valor booleano que determina si la imagen cambia cuando el botón está deshabilitado".
Si esto ajusta la propiedad ImageWhenDisabled se establece en "SÍ", la imagen se dibuja más oscura cuando el botón está desactivado. El valor predeterminado es SÍ. "
Me enfrento al mismo problema porque había establecido el color de fondo.
UIControlStateNormal
el color de fondo y lo configuré solo para UIControlStateNormal
y comenzó a aparecer el comportamiento predeterminado para habilitar / deshabilitar.
Si está configurando el color de fondo en lugar de la imagen, pruebe esta categoría para convertir UIColor en UIImage:
copiado desde 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;
}
luego usa esto:
[self.loginButton setBackgroundImage:[UIImage imageWithColor:greenColor] forState:UIControlStateNormal];
self.loginButton.enabled = NO;
para establecer el color como fondo. Ahora cuando habilite / deshabilite, debería aparecer el efecto gris.
No hay forma de hacer un UIButton "más gris". Pero puedes usar ese truco:
UIButton *myButton;
myButton.alpha = 0.4;
myButton.enabled = NO;
Entonces tu UIButton parece inutilizable;)
Simplemente haga una categoría de UIButton como la siguiente e importe #import "UIButton+StateColors.h"
en las clases donde quiera usarlo.
.h
#import <UIKit/UIKit.h>
@interface UIButton (StateColors)
-(void)makeDisabled:(BOOL)flag;
@end
.metro
#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
Y úsalo así ...
[self.emailBtn makeDisabled:NO];
[self.printBtn makeDisabled:YES];
Es una solución universal, espero ...