¿Por qué una image personalizada de UIButton no cambia de tamaño en Interface Builder?

¿Por qué una image UUbutton personalizada no cambia de tamaño con el button?

Configuré su modo de vista en Escala para completar el Generador de interfaces, pero a diferencia de una image UIImageView, no respeta esa configuration.

¿Estoy buscando en el lugar equivocado o no es posible?

Si bien esto puede no ser exactamente lo que buscas, la image de background escala.

Prueba esto:

[button setImage:image forState:UIControlStateNormal]; button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill; button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill; 

Sé que esto es antiguo, pero creo que la respuesta correcta es que debes configurar el modo de contenido en el UIImageView "oculto" que está dentro del UIButton:

 button.imageView.contentMode = UIViewContentModeScaleAspectFill; 

Esto cambiará el modo de contenido para las vistas de imágenes de las imágenes configuradas con:

 [button setImage:yourAwesomeImage forState:UIControlStateNormal]; //Or any other state 

Recuerde establecer la configuration de Alineación de control para el button

aquí configure la configuración de Alineación de control para el botón

Simplemente haga (desde el layout o desde el código):

Desde layout

  1. Abre tu xib OR Storyboard.
  2. Seleccionar button
  3. Inside Attribute Inspector (lado derecho)> En la sección "Control" > select la última 4ta opción para Horizontal y Verical.

[Para el punto n. ° 3: cambiar alignment horizontal y vertical a UIControlContentHorizontalAlignmentFill y UIControlContentVericalAlignmentFill]

Del código

button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentFill; button.contentVerticalAlignment = UIControlContentVerticalAlignmentFill;

Interface Builder

Para get imágenes en UIButtons para escalar de la misma manera que UIViews en Interface Builder, siga estos pasos:

Seleccione su button UIB y desde el Inspector de identidad agregue lo siguiente a Atributos de time de ejecución definidos por el usuario:

imageView.contentMode Number 1

Donde número es el número enumeración de contentMode, por ejemplo:

 0 = Scale to fill 1 = Aspect Fit 2 = Aspect Fill etc.. 

Luego, abra el editor de Atributos para su UIB y bajo Control configure la Alineación a Relleno (último button a la derecha) para horizontal y vertical.

SWIFT 3

Tenga en count que también puede hacer esto en el código con lo siguiente:

 button.imageView?.contentMode = .scaleAspectFit button.contentVerticalAlignment = .fill button.contentHorizontalAlignment = .fill 

Intente establecer la propiedad Subvenciones de Clip en Interface Builder en true.

Espero que ayude.

La mejor solución que encontré hasta ahora en Swift 2.1 es la siguiente:

 self.imageButton.imageView?.clipsToBounds = true self.imageButton.imageView?.contentMode = UIViewContentMode.ScaleAspectFit 

Esto escalará la image para que tenga un aspecto apropiado en la image.

Simplemente obtenga una UIimageview real y coloque un button UI encima y, a través del menu de layout, configúrelo en la parte posterior. Entonces puedes escalar tu image correctamente.