Estoy tratando de crear una personalizada UITableViewCell mediante programación y una de las subvistas de este celular va a ser un botón con una imagen (una simple imagen de una lupa). Sin embargo, quiero que el botón de la imagen centrada y ajusta proporcionalmente para que quepa en el botón y NO se expande para llenar todo el botón. A continuación es mi código donde el auto se refiere a la costumbre UITableViewCell que estoy colocando el botón en.

self.myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[self.myButton setBackgroundImage:[UIImage imageNamed: @image_name_here"] forState:UIControlStateNormal];
self.myButton.frame = CGRectMake(...//something, something)
self.myButton.imageView.contentMode = UIViewContentModeCenter;
[self.contentView addSubview:self.mySearchHelpButton];

Ahora la imagen se extiende para llenar el botón en lugar de escalado proporcionalmente, de modo que se adapta muy bien.

También he probado la configuración de la contentMode a UIViewContentModeScaleAspectFill pero esto no parece cambiar nada. De hecho, ninguno de los diferentes contentModes parecen cambiar nada.

InformationsquelleAutor Nosrettap | 2012-07-05

7 Comentarios

  1. 48

    Asegúrese de que el botón es una Costumbre UIButton

    Sólo mediante setImage: no me funciona en iOS9.

    Pero funcionó combinado con myButton.imageView.contentMode = UIViewContentMode.ScaleAspectFit;

    • Gracias! Esto funciona para mí también, a mí me parece que este atributo no está expuesta en el IB, por lo que tenemos que configurar manualmente en el código en lugar de la de IB. En IB, sólo hay un modo de contenido de valor para el botón en sí, en lugar de su imageView. Me corrija si estoy equivocado.
    • Ustedes están en el lugar RainCast – la única forma de ajustar el aspecto de ajuste para el imageView parece ser mediante programación.
  2. 37

    En Swift…

    button.imageView?.contentMode = .aspectFit
    • este es ahora button.imageView?.contentMode = .scaleAspectFit
    • ten en cuenta que si yourButton.translatesAutoresizingMaskIntoConstraints = falseluego .scaleAspectFit no serán de aplicación
  3. 28

    Storyboard

    Propiedad imagen.

    Debe definir la propiedad específica en tiempo de ejecución de los Atributos de Identidad inspectorimageView.contentMode, donde se establece el valor relativamente a rawValue posición de enum UIViewContentMode. 1 significa scaleAspectFit.

    Cómo no estirar una imagen en UIButton

    Y botón de alineación, en Atributos del inspector de:

    Cómo no estirar una imagen en UIButton

    • gracias, tu guía me ayuda mucho. es posible que usted me dé una breve explicación acerca de lo que estás haciendo exactamente? muchas gracias
    • podrías ser más específico? Gracias.
    • de esta manera está funcionando completamente bien para el botón que quiero pero lo que Si tengo un imageView, a continuación, necesito mi galería de imágenes a los límites y también sin estirar con la imagen completa se muestra
    • y scaleAspectFit son adecuados para esto. Si no es lo que usted está hablando a crear una pregunta y poner un enlace aquí. Pero poner la pregunta para las imágenes de los resultados esperados.
    • Este es el rawValue de la scaleAspectFit enum (caso scaleAspectFit = 1)
    • Esto funcionó para mí, pero SÓLO después de que yo tenía descargar y volver a cargar la imagen – es decir, eliminar el nombre de la imagen de la imagen / fondo del campo de la imagen, a continuación, añadir de nuevo para volver a cargar.
    • Usted salvó mi día!
    • fuera de todo esto funcionó para mí… ninguna de las otras soluciones realizaciones
    • gracias, yo tenía este problema cuando se utilizan varios botones en UIStackView, y ayudó a

  4. 9

    Swift 4.2

    myButton.imageView!.contentMode = .scaleAspectFit

    Swift versión anterior

    myButton.imageView!.contentMode = UIViewContentMode.scaleAspectFit
  5. 3

    Swift 4.X y 5.X

    button.imageView!.contentMode = .scaleAspectFit
    button.contentVerticalAlignment = .fill
    button.contentHorizontalAlignment = .fill
  6. 2

    Yo creo que ustedes están desaparecidos de la cuestión obvia. La imagen es demasiado grande para el botón y iOS, a continuación, tiene que adivinar lo que usted desea a aumentar la escala. Asegúrese de que sus imágenes sean del tamaño correcto y usted no tendrá este problema. Por supuesto, esto es para las imágenes estáticas y los botones que usted sabe el tamaño de la para arriba-frente-no de contenido dinámico.

    • ¿Cuál sería el tamaño adecuado para un botón normal? menos de la anchura y la altura del botón de sí mismo? o cómo se calcula?
    • el tamaño debe ser el punto exacto del tamaño del botón, la anchura y la altura que desee. Por ejemplo, si desea un 44pt x 100pt botón, la imagen de los activos debe ser 44×100 píxeles @ 1x, 88×200 píxeles @ 2x, 132×300 píxeles @ 3x.Que manera de diseño automático sabe puede utilizar la imagen como el tamaño real de el botón.

Dejar respuesta

Please enter your comment!
Please enter your name here