En mi aplicación para iPhone, tengo un UIButton que he creado en Interface Builder. Puedo habilitarlo y deshabilitarlo con éxito 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 ni gris. Sin embargo, si intento hacer clic en él, se activa o desactiva como se esperaba. ¿Me estoy perdiendo de algo? ¿No debería verse desvaído o gris?
ios
iphone
cocoa-touch
uibutton
Andy A
fuente
fuente
Respuestas:
Puedes usar el siguiente código:
fuente
simplemente cambie la configuración de estado para deshabilitar y elija lo que desee, Imagen de fondo para estado deshabilitado
fuente
Otra opción es cambiar el color del texto (a gris claro, por ejemplo) para el estado deshabilitado.
En el editor del guión gráfico, elija
Disabled
delState Config
botón emergente. Use elText Color
botón emergente para cambiar el color del texto.En código, usa el
-setTitleColor:forState:
mensaje.fuente
Intente configurar las diferentes imágenes para
UIControlStateDisabled
(imagen gris deshabilitada) yUIControlStateNormal
(Imagen normal) para que el botón genere el estado deshabilitado por usted.fuente
[ UIButton setAttributedTitle:forState:]
. Cree su cadena atribuida donde el color de primer plano del texto se establezca en un color transparente.Para hacer que el botón se desvanezca cuando se deshabilita, puede configurar alfa para él. Hay dos opciones para ti:
Primera forma : si desea solicitar todos sus botones en su aplicación, puede escribir
extension
para UIButton de esta manera:Segunda forma : si solo desea solicitar algunos botones en su aplicación, puede escribir una clase personalizada desde UIButton como se muestra a continuación y usar esta clase para la que desea aplicar:
fuente
Si usa un botón de texto, puede poner en viewDidLoad el método de instancia
ejemplo:
fuente
Puedes usar
adjustsImageWhenDisabled
cual es propiedad deUIButton
(@property (nonatomic) BOOL adjustsImageWhenDisabled)
Ex:
fuente
Esta es una pregunta bastante antigua, pero hay una forma muy simple de lograrlo.
myButton.userInteractionEnabled = false
Esto solo deshabilitará cualquier gesto táctil sin cambiar la apariencia del botón
fuente
En Swift :
o
fuente
Establecido
title color
para diferentes estados:Uso: (el color del texto cambiará automáticamente)
fuente
Cree una extensión en Swift> 3.0 en lugar de cada botón por sí mismo
fuente
Puede usar las dos primeras respuestas y será un mejor resultado.
En el inspector de atributos (cuando selecciona el botón), cambie la Configuración de estado a Desactivada para establecer la nueva imagen que aparecerá cuando esté desactivada (elimine el marcador en la verificación Contenido-> Activado para desactivarla) .
Y cuando cambia el estado a habilitado, la imagen cargará la de este estado.
Agregar la lógica alfa a esto es un buen detalle.
fuente
Swift 4+
Cómo utilizar
fuente
Estoy atrapado en el mismo problema. Establecer alfa no es lo que quiero.
UIButton
tiene " imagen de fondo " y " color de fondo ". Por 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 alfa, la solución de Ravin, funciona bien.
Primero, debe verificar si ha desmarcado el cuadro "deshabilitar ajusta imagen" en Utilidades-Atributos.
Luego, verifique el color de fondo de este botón.
(Espero que sea útil. Esta es una publicación antigua; las cosas podrían haber cambiado en Xcode).
fuente
Parece que el siguiente código funciona bien. Pero en algunos casos, esto no funciona.
Si el código anterior no funciona, envuélvalo en Hilo principal. entonces
si vas con rapidez, así
Además, si personalizó UIButton, agréguelo a la clase Button.
Gracias y disfruta codificando !!!
fuente
Si el
UIButton
está en el estado combinado deselected
ydisabled
, su estado esUIControlStateSelected | UIControlStateDisabled
.Por lo tanto, su estado debe ajustarse así:
Un enfoque es subclasificar de la
UIButton
siguiente manera:fuente
Esta pregunta tiene muchas respuestas, pero todas no parecen muy útiles en caso de que realmente quiera usar backgroundColor para diseñar sus botones. UIButton tiene una buena opción para configurar diferentes imágenes para diferentes estados de control, pero no hay la misma función para los colores de fondo. Entonces, una de las soluciones es agregar una extensión que generará imágenes a partir del color y aplicarlas al botón.
Solo hay un problema con esta solución: este cambio no se aplicará a los botones creados en el guión gráfico. En cuanto a mí, no es un problema porque prefiero diseñar la interfaz de usuario desde el código. Si desea usar guiones gráficos, entonces
@IBInspectable
necesita algo de magia adicional .La segunda opción es la subclasificación, pero prefiero evitar esto.
fuente
Tal vez pueda subclasificar su botón y anular su variable isEnabled. La ventaja es que puede reutilizar en múltiples lugares.
fuente
.h:
fuente