¿Por qué una costumbre UIButton imagen no cambiar el tamaño con el botón?

Puedo configurar su modo de vista a Escala para Llenar en el Interface Builder, pero a diferencia de un UIImageView de la imagen, no el respeto que se ajuste.

Estoy buscando en el lugar equivocado o no es posible?

  • He encontrado que a pesar de que no la escala de la imagen en IB sí escala de la imagen en tiempo de ejecución.
  • eso no es necesariamente cierto… si tienes 80x80pixel img con un 60×60 píxeles botón, se escala el botón para que coincida con el tamaño de la imagen, mientras que una gran cantidad de personas que quieren lo contrario (la escala de la imagen para que coincida con el menor tamaño de los botones)… ver mi respuesta a este post de código adecuado para hacer esto: stackoverflow.com/questions/2658738/…
InformationsquelleAutor willc2 | 2009-06-30

9 Comentarios

  1. 80

    Mientras que esto puede no ser exactamente lo que usted está después de la imagen de fondo hace escala.

    • Si pongo la imagen en el fondo, me sale el comportamiento correcto así que solucionado, gracias.
    • Si usted no está dispuesto a utilizar la imagen de fondo (porque dicen que desee utilizar diferentes imágenes de los diferentes estados), es necesario establecer la propiedad de alineación. Ver: stackoverflow.com/questions/1957317/…
    • lo que si desea que la escala para que se ajuste? a continuación, la imagen de fondo, que las escalas de llenar, no sería apropiado
    • Esto salvó mi vida (al menos un par de horas de la misma)
    • ah, así que no es la imagen, pero el imagen de fondo. voy a olvidar mi nombre antes de olvidar esto.
  2. 52

    Intente esto:

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

    En Swift:

    button.contentVerticalAlignment = .fill
    button.contentHorizontalAlignment = .fill
    • Funcionó!!!!
    • también funciona en la interfaz del generador de esta manera 😉
    • Usted salvó mi día! Bravo .. También asegúrese de que el tipo de botón es custom
    • Funcionó para mí – XCode 8 de Swift, 3, UIButton creado por storyboard, vector/PDF imagen como imagen del botón
  3. 36

    Recuerde ajustar el Control de la configuración de Alineación para el botón

    ¿Por qué una costumbre UIButton imagen no cambia de tamaño en el Interface Builder?

    • usted es el príncipe …..
  4. 11

    Sé que esto es viejo, pero creo que la respuesta correcta es la que debe establecer el modo de contenido a la «oculta» UIImageView que está dentro de la UIButton:

    button.imageView.contentMode = UIViewContentModeScaleAspectFill;

    Esto va a cambiar el modo de contenido de las imágenes vistas del conjunto de imágenes con:

    [button setImage:yourAwesomeImage forState:UIControlStateNormal]; 
    //Or any other state
    • no me funciona 🙁 Mis imágenes todavía no se expande para llenar el botón de anchura y altura
    • No funciona en iOS8. Trató de configuración antes y después de la adición de la imagen para el botón. self.button1.imageView.contentMode = UIViewContentModeScaleAspectFill; Intentado scaleAscpetFill y scaleToFill, no vaya. Cao Huu Loc de la solución de trabajo.
  5. 10

    Acaba de hacer (De Diseño O De Código):

    De Diseño

    1. Abrir su xib O Guión gráfico.
    2. Botón seleccionar
    3. Dentro de Atributo Inspector (lado Derecho) > En «Control» sección > seleccionar la última 4ª opción a nivel Horizontal y Verical.

    [Para el Punto#3: el Cambio Horizontal y vertical para Alinear a UIControlContentHorizontalAlignmentfill y UIControlContentVericalAlignmentfill]

    De Código

    botón.contentHorizontalAlignment = UIControlContentHorizontalAlignmentfill;
    el botón.contentVerticalAlignment = UIControlContentVerticalAlignmentfill;

    • Divertido, en el XIB visor no se ve escala. De hecho sopla hasta el botón a un tamaño mayor, pero, a continuación, en tiempo de ejecución se ajusta al tamaño que debería ser.
  6. 5

    Interface Builder

    Para obtener imágenes en UIButtons a escala de la misma manera como UIViews en interface Builder, siga estos pasos:

    Seleccione su UIButton y de la Identidad Inspector agregar el siguiente Usuario Definido de tiempo de ejecución de los Atributos:

    imageView.contentMode Número 1

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

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

    A continuación, abra el Atributos editor para su UIButton y bajo Control conjunto de la Alineación para Rellenar (último botón de la derecha) a nivel horizontal y vertical.

    SWIFT 3

    Nota también puede hacer esto en el código con la siguiente:

    button.imageView?.contentMode = .scaleAspectFit
    button.contentVerticalAlignment = .fill
    button.contentHorizontalAlignment = .fill
    • La respuesta perfecta! Gracias.
    • Esto funcionó para mí 🙂
  7. 0

    Trata de ajustar el Clip de subvistas de la propiedad en el Interface Builder a la verdad.

    Espero que ayude.

    • Ay, que no lo hizo. Gracias por tratar de ayudar, aunque.
  8. -2

    La mejor solución que he encontrado hasta ahora en Swift 2.1 es la siguiente:

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

    Esta escala la imagen por lo que tiene un aspecto ajuste en el imageView.

  9. -5

    Acaba de obtener una real UIimageview y colocar un UIbutton en la parte superior de la misma y a través de diseño de conjunto de menús a la espalda. A continuación, puede ajustar la escala de la imagen correctamente.

Dejar respuesta

Please enter your comment!
Please enter your name here