firstButton es un UIButton de tipo Custom. Estoy poniendo programáticamente tres de ellos en cada celda de una tabla, así:
[firstButton setImage:markImage forState:UIControlStateNormal];
[firstButton setContentMode:UIViewContentModeScaleAspectFit];
[cell.contentView addSubview:firstButton];
En otra parte, se lo digo a clipToBounds. Lo que obtengo es un recorte del cuadrado central de la imagen, en lugar de una representación en escala de aspecto. He intentado esto de muchas maneras, incluida la configuración de la propiedad de modo en firstButton.imageView, que tampoco parece funcionar.
ios
uibutton
contentmode
Dan Ray
fuente
fuente
Respuestas:
Yo tuve el mismo problema. Veo que esta pregunta es un poco antigua, pero quiero proporcionar una respuesta clara y correcta para que otras personas (como yo) no tengan tiempo cuando aparezca en sus resultados de búsqueda.
Me tomó un poco de búsqueda y experimentación, pero encontré la solución. Simplemente configure el ContentMode del ImageView "oculto" que está dentro del UIButton.
Quizás a eso se refería Dan Ray en su respuesta aceptada, pero sospecho que no.
fuente
Si está tratando con la imagen de UIButton (a diferencia de su backgroundImage), configurar contentMode en el UIButton en sí o en su imageView no tiene ningún efecto (a pesar de lo que digan otras respuestas).
Alternativamente, haz esto en su lugar:
O dimensione su imagen en consecuencia.
O simplemente use un UIImageView (que respete adecuadamente el contentMode) con un UITapGestureRecognizer adjunto, o un UIButton transparente encima.
fuente
contentMode
en elimageView
que si quieres hacer cualquier tipo de relleno aspecto o forma, como otras respuestas han aclarado. Consulte: stackoverflow.com/a/7944316/746890 .En lugar de configurar el
contentMode
botón en sí, querrá configurarcontentHorizontalAlignment
ycontentVerticalAlignment
propiedades y (fundamentalmente) lascontentMode
del botónimageView
para cualquier tipo de relleno o ajuste de aspecto. He aquí un ejemplo:Por supuesto, también puede hacer otras cosas como alinear la imagen del botón con la parte superior del botón. Si no necesita un relleno o ajuste de aspecto, puede establecer la alineación por sí mismo:
En Swift, querrá usar:
Esto funciona para todas las versiones de iOS, incluidas las últimas versiones con diseño automático (es decir, iOS 4 hasta iOS 11+).
fuente
Después de un par de horas de confusión, así es como hice que funcionara con iOS 3.2. Como mencionó Dusker, usar setBackgroundImage en lugar de setImage hizo el trabajo por mí.
fuente
La respuesta es usar un UIImageView con todos los encantadores ajustes de modo de contenido que desee y luego colocar un botón personalizado encima. Es tonto que no puedas hacer todo eso de una sola vez, pero parece que no puedes.
fuente
Encontré una solución para esto. Establezca la
adjustsImageWhenHighlighted
propiedad deUIButton
aNO
.Espero que esto ayude. No dude en comentar a continuación, haré un seguimiento de cualquier pregunta que tenga.
fuente
Mi respuesta es similar a la de Kuba. Necesitaba que mi imagen estuviera configurada programáticamente.
fuente
La única solución que funcionó para mí:
fuente
Swift 3
fuente
En lugar de setImage, intente setBackgroundImage
fuente
Creo que tenemos un problema de construcción de interfaz simple aquí: aparentemente, el IB ignora cualquier cambio en el modo de contenido DESPUÉS de que haya establecido la propiedad de la imagen.
la solución es tan simple: configure el modo de contenido, elimine los nombres de imagen establecidos previamente (asegúrese de eliminarlos en todos los estados, predeterminados, resaltados, etc.), luego vuelva a ingresar los nombres de imágenes deseados en todos los estados deseados - et voilà .
fuente
También recomiendo echar un vistazo a la
adjustsImageWhenHighlighted
UIButton
propiedad para evitar deformaciones extrañas de la imagen, cuando se presiona el botón.fuente
Al tratar de resolver esto, mi método se volvió un poco más complicado a medida que pasaba el tiempo, y terminé subclasificando UIButton y anulando setHighlights:
Para mí, funciona simplemente reducir la imagen alfa a .5, porque están sobre un fondo negro.
Sin embargo, solo funciona si comento [super setHighlights:] (donde parece que el código elástico de la imagen está sucediendo), que simplemente no parece la forma correcta de resolver esto en absoluto ... todo parece estar bien funcionando bien, sin embargo. Veremos cómo se mantiene mientras sigo trabajando en ello.
fuente
Si alguien busca una respuesta que funcione en iOS 6 e iOS 7 y el guión gráfico:
Puede configurar la imagen en su guión gráfico:
Y entonces:
fuente
Si el UIButton no parece escuchar la configuración de restricción de diseño, verifique si las imágenes son más grandes que el tamaño del botón. Utilice siempre las imágenes @ 2x y @ 3x para resoluciones de retina.
fuente
Estas dos cosas (que son bastante difíciles de encontrar inicialmente) estirarán la imagen de UIButton para que se ajuste al tamaño del botón:
siempre se debe intentar configurarlo en el Storyboard en lugar de en el código.
fuente