iphone - guidelines - menu ios
Disabled UIButton no se desvaneció o gris (14)
Cree una extensión en Swift> 3.0 en lugar de cada botón por sí mismo
extension UIButton {
override open var isEnabled : Bool {
willSet{
if newValue == false {
self.setTitleColor(UIColor.gray, for: UIControlState.disabled)
}
}
}
En mi aplicación para iPhone, tengo un UIButton que he creado en Interface Builder. Puedo habilitarlo y deshabilitarlo de esta manera en mi código ...
sendButton.enabled = YES;
o
sendButton.enabled = NO;
Sin embargo, el aspecto visual del botón es siempre el mismo. No está descolorido o gris. Sin embargo, si intento hacer clic en él, está habilitado o deshabilitado como se esperaba. ¿Me estoy perdiendo de algo? ¿No debería verse descolorido o gris?
Gracias
En Swift :
previousCustomButton.enabled = false
previousCustomButton.alpha = 0.5
o
nextCustomButton.enabled = true
nextCustomButton.alpha = 1.0
Esta es una pregunta bastante antigua, pero hay una manera muy simple de lograr esto.
myButton.userInteractionEnabled = false
Esto solo desactivará cualquier gesto táctil sin cambiar la apariencia del botón
Estoy atrapado en el mismo problema. Establecer alfa no es lo que quiero.
UIButton
tiene " imagen de fondo " y " color de fondo ". Para la imagen, UIButton
tiene una propiedad como
@property (nonatomic) BOOL adjustsImageWhenDisabled
Y la imagen de fondo se dibuja más clara cuando el botón está desactivado. Para el color de fondo, la configuración de alfa, la solución de Ravin, funciona bien.
En primer lugar, debe verificar si ha desactivado la casilla "deshabilitar ajusta la imagen" en Utilidades-Atributos.
Luego, verifique el color de fondo de este botón.
(Espero que sea útil. Esta es una publicación anterior, las cosas podrían haber cambiado en Xcode).
Intente configurar las diferentes imágenes para UIControlStateDisabled
(imagen gris deshabilitada) y UIControlStateNormal
(imagen normal) para que el botón genere el estado desactivado por usted.
Otra opción es cambiar el color del texto (a gris claro, por ejemplo) para el estado desactivado. En el editor del guión gráfico, seleccione Deshabilitado en el botón emergente de Configuración de estado y use el botón emergente de Color del texto para cambiar el color del texto. En el código, use el mensaje -setTitleColor: forState:.
(Me doy cuenta de que esta es una publicación más antigua, pero pensé que a otros les gustaría esta opción)
Para hacer que el botón se desvanezca cuando se deshabilita, puede establecer alfa para él. Hay dos opciones para ti:
Primera forma : si desea aplicar todos sus botones en su aplicación, puede escribir extention
para UIButton de esta manera:
extension UIButton {
open override var isEnabled: Bool{
didSet {
alpha = isEnabled ? 1.0 : 0.5
}
}
}
Segunda forma : si solo desea solicitar algunos botones en su aplicación, puede escribir una clase personalizada desde UIButton como se indica a continuación y usar esta clase para la cual desea aplicar:
class MyButton: UIButton {
override var isEnabled: Bool {
didSet {
alpha = isEnabled ? 1.0 : 0.5
}
}
}
Puede usar adjustsImageWhenDisabled
que es propiedad de UIButton
(@property (nonatomic) BOOL adjustsImageWhenDisabled)
Ex:
Button.adjustsImageWhenDisabled = false
Puede usar el siguiente código:
sendButton.enabled = YES;
sendButton.alpha = 1.0;
or
sendButton.enabled = NO;
sendButton.alpha = 0.5;
Puede usar las dos primeras respuestas y va a tener un mejor resultado.
En el inspector de atributos (cuando está seleccionando el botón), cambie la Configuración de estado a Desactivado para establecer la nueva Imagen que aparecerá cuando esté desactivada (elimine el marcador en la casilla Contenido-> Habilitado para desactivarlo) .
Y cuando cambie el estado a habilitado, la imagen cargará la de este estado.
Agregar la lógica alfa a esto es un buen detalle.
¡Saludos!
Si el UIButton
está en el estado combinado con selected
y disabled
, su estado es UIControlStateSelected | UIControlStateDisabled
UIControlStateSelected | UIControlStateDisabled
.
Entonces, es el estado necesita ajustarse por
[button setTitleColor:color UIControlStateSelected | UIControlStateDisabled];
[button setImage:image forState:UIControlStateSelected | UIControlStateDisabled];
Un enfoque es UIButton
como siguiente.
@implementation TTButton
- (void)awaeFromNib {
[super awakeFromNib];
//! Fix behavior when `disabled && selected`
//! Load settings in `xib` or `storyboard`, and apply it again.
UIColor *color = [self titleColorForState:UIControlStateDisabled];
[self setTitleColor:color forState:UIControlStateDisabled];
UIImage *img = [self imageForState:UIControlStateDisabled];
[self setImage:img forState:UIControlStateDisabled];
}
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state {
[super setTitleColor:color forState:state];
//
if (UIControlStateDisabled == state) {
[super setTitleColor:color forState:UIControlStateSelected | state];
[super setTitleColor:color forState:UIControlStateHighlighted | state];
}
}
- (void)setImage:(UIImage *)image forState:(UIControlState)state {
[super setImage:image forState:state];
if (UIControlStateDisabled == state) {
[super setImage:image forState:UIControlStateSelected | state];
[super setImage:image forState:UIControlStateHighlighted | state];
}
}
@end
Si usa un botón de texto, puede poner en viewDidLoad el método de instancia
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state
ejemplo:
[self.syncImagesButton setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];
#import "UIButton+My.h"
#import <QuartzCore/QuartzCore.h>
@implementation UIButton (My)
-(void)fade :(BOOL)enable{
self.enabled=enable;//
self.alpha=enable?1.0:0.5;
}
@end
.h:
#import <UIKit/UIKit.h>
@interface UIButton (My)
-(void)fade :(BOOL)enable;
@end