En iOS 6 SDK escribí las siguientes líneas de código para mostrar una imagen dentro de un botón:
NSURL *thumbURL2 = [NSURL URLWithString:@"http://example.com/thumbs/2.jpg"];
NSData *thumbData2 = [NSData dataWithContentsOfURL:thumbURL2];
UIImage *thumb2 = [UIImage imageWithData:thumbData2];
[btn2 setImage:thumb2 forState:UIControlStateNormal];
[self.view addSubview:btn2];
Pero ahora con Xcode 5 e iOS 7 esto no funciona. El botón no contiene la imagen. El botón está lleno de color azul.
Respuestas:
En iOS7 hay un nuevo tipo de botón llamado UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS (7_0), // botón de sistema estándar
Verifique su archivo .xib y cambie el tipo de botón a Personalizado
Para hacer esto mediante programación, agregue esta línea a
viewDidLoad
:fuente
[myUIButton setImage: [[UIImage imageNamed: @"myButtonImage"] imageWithRenderingMode: UIImageRenderingModeAlwaysOriginal] forState: UIControlStateNormal];
(con el tipo de botón establecido en "Sistema" en IB).Parece que iOS 7 está utilizando la imagen proporcionada solo como una máscara Alfa para mostrar el color del tinte del botón. Cambiar el tipo de botón
UIButtonTypeCustom
hizo el truco para mí (¡gracias user716216!). Establecer la imagen como fondo no siempre funciona si ya tiene una imagen de fondo, como fue mi caso.fuente
Swift 3, 4, 5:
fuente
Existe una buena posibilidad de que la imagen esté allí y simplemente no se pueda ver. Intenta cambiar el tipo de botón a
UIButtonTypeCustom
. Si eso no funciona, configure el color de fondo del botón en[UIColor clearColor];
fuente
El problema es el TintColor. De forma predeterminada, iOS arroja un color de tinte azul sobre cada botón. Puede sortearlo de 3 maneras.
Cambiar el color del tinte.
[button setTintColor:[UIColor blackColor]];
Esto puede colorear su imagen de formas que no desea.Como la mayoría de los demás sugirió, configure la imagen de fondo.
[button setBackgroundImage:[UIImage...]];
Agregue un UIImageView a su botón.
UIImageView * img = [[UIImageView alloc] initWithImage:[UIImage...]];
[button addSubView:img];
fuente
Para rápido:
fuente
Tuve el mismo problema. En mi guión gráfico tenía un botón sin ninguna imagen.
Luego asignaría la imagen en el código.
IOS 7 llegó y obtuve muchas imágenes azules.
La resolución fue simple pero confusa. Si asigno cualquier imagen en el guión gráfico y luego cambio la imagen en tiempo de ejecución, funciona bien.
Siempre debe especificar una imagen de inicio en el guión gráfico, incluso si no va a usarla.
fuente
Esto funciono para mi
Nota: Elimine la imagen frontal antes de hacer esto.
fuente
Hilo antiguo, pero quería intervenir porque simplemente tenía el mismo problema. El problema era que estaba llamando a setImage cuando debería llamar a setBackgroundImage.
fuente
Ninguna de las soluciones dadas funcionaba para mí. Si no establece una imagen inicial en Storyboard, aún puede cambiar la imagen del botón utilizando
setBackgroundImage
.Para su ejemplo, solo se necesita un cambio menor.
fuente
Este problema se llama problema de color azul del botón en xcode. Cuando hacemos un botón por código, el botón muestra el color de tinte azul de manera predeterminada. Esto se puede resolver asignando el color de tinte a negro o blanco de acuerdo con el color de su celda. El codigo es:
fuente
Usando Xcode 9.2 ninguna de las soluciones anteriores funcionó para lo que estaba buscando.
Estaba buscando una solución que me permitiera configurar
.normal
e.selected
UIControlState
imágenes dentro del guión gráfico para su modo de representación original , pero, dentro del archivo Swift, no deberían existir literales de cadena con respecto a los nombres de las imágenes.Básicamente, dentro de su código obtendrá la imagen que configuró dentro de su guión gráfico para el
.normal
estado y la volverá a representar como.alwaysOriginal
(Lo mismo para el.selected
estado), luego, configurará esa imagen (que ahora se representa como original y no se verá afectada por el tinte) para el estado relevante (.normal
y.selected
) de suUIButton
.Aquí está:
De esta manera, puede configurar los estados de imagen de su botón y si el nombre de la imagen cambia, no afectará su código.
fuente
En iOS 13, simplemente configure la propiedad Tinte en Blanco, manteniendo el tipo de UIButton como Personalizado
fuente
hacer que el color de tinte sea transparente para los cuatro estados (predeterminado, resaltado, seleccionado, deshabilitado) funcionó para mí.
fuente
En Swift 4 , inicialice
UIButton
y asigne sus Datos de imagen de la siguiente manera:fuente