¿Cómo puedo ajustar el tamaño de la imagen del UIButton? Estoy configurando la imagen así:
[myLikesButton setImage:[UIImage imageNamed:@"icon-heart.png"] forState:UIControlStateNormal];
Sin embargo, esto llena la imagen hasta el botón completo, ¿cómo hago para que la imagen sea más pequeña?
ios
objective-c
xcode
uibutton
adit
fuente
fuente
Respuestas:
Si entiendo correctamente lo que estás tratando de hacer, debes jugar con los botones de inserción de borde de imagen. Algo como:
fuente
La respuesta de Tim es correcta, sin embargo, quería agregar otra sugerencia, porque en mi caso había una solución más simple.
Estaba buscando configurar las
UIButton
inserciones de imagen porque no me di cuenta de que podía configurar el modo de contenido en los botonesUIImageView
, lo que habría evitado la necesidad de usar UIEdgeInsets y valores codificados por completo. Simplemente acceda a la vista de imagen subyacente en el botón y configure el modo de contenido:¿Ves UIButton no escucha la configuración del modo de contenido?
Swift 3
fuente
button.backgroundImageView.contentMode
no funcionaSwift 3:
fuente
contentVerticalAlignment/contentHorizontalAlignment
opciones me permitieron escalarlo de la manera que esperaba. Gracias por publicar esto.contentHorizontalAlignment
econtentVerticalAlignment
hizo el trucoTambién puede hacerlo desde el generador de interfaces como este.
Creo que es útil
fuente
Si su imagen es demasiado grande (y no puede / no desea que la imagen sea más pequeña), una combinación de las dos primeras respuestas funciona muy bien.
A menos que obtenga las inserciones de la imagen correctamente, la imagen se sesgará sin cambiar el
contentMode
.fuente
puede usar la
imageEdgeInsets
propiedad Los márgenes de entrada o de salida para el rectángulo alrededor de la imagen del botón.Un valor positivo reduce o inserta ese borde, moviéndose. Un valor negativo expande, o compensa, ese borde.
fuente
Aquí está la otra solución para escalar imageView de UIButton.
fuente
Aquí está la versión Swift:
fuente
Swift 4
Debería usar estas dos líneas de código, en este orden específico. Todo lo que necesita es cambiar el valor superior e inferior de las inserciones de borde.
fuente
EXC_BAD_ACCESS
error cuando se llamó desdeoverride func layoutSubviews()
.Con la ayuda de la respuesta de Tim C , pude crear una extensión sobre el
UIButton
uso de Swift que le permite especificar el marco de la imagen utilizando la.setImage()
función con unframe
parámetro adicionalUtilizando esto, si desea establecer el marco de un
UIButton
aCGRectMake(0, 0, 64, 64)
, y establecer la imagenmyImage
con un marco deCGRectMake(8, 8, 48, 48)
, puede usarfuente
if let
lugar de verificar siframe
esnil
así , debe forzar el desenvolvimiento un millón de veces .Al cambiar el tamaño del icono con
UIEdgeInsetsMake(top, left, bottom, right)
, tenga en cuenta las dimensiones de los botones y la capacidad de UIEdgeInsetsMake para trabajar con valores negativos como si fueran positivos.Ejemplo: dos botones con altura 100 y aspecto 1: 1.
Los ejemplos 1 y 3 son idénticos ya que ABS (100 - (40 + 40)) = ABS (100 - (60 + 60))
fuente
Swift 3
Establecí el ancho y la altura de myButton en 40 y mi relleno de EdgeInsetsMake es 15 en todos los lados. Sugiero agregar un color de fondo a su botón para ver el relleno real.
fuente
Un enfoque es cambiar el tamaño del UIImage en código como el siguiente. Nota: este código solo escala por altura, pero también puede ajustar fácilmente la función para escalar por ancho.
fuente
Actualizado para Swift> 5
establecer el tamaño:
establecer márgenes:
fuente
Actualizado para Swift 3
fuente
Creo que el tamaño de su imagen también es el mismo que el tamaño del botón y luego coloca la imagen en el fondo del botón como:
tienes mástil tiene el mismo tamaño de imagen y botón. Espero que entiendas mi punto.
fuente