Quiero agregar una imagen a un UIButton, y también quiero escalar mi imagen para que encaje con el UIButton (hacer la imagen más pequeña). Por favor enséñame cómo hacerlo.
Esto es lo que he probado, pero no funciona:
- Agregar imagen al botón y usar
setContentMode
:
[self.itemImageButton setImage:stretchImage forState:UIControlStateNormal];
[self.itemImageButton setContentMode:UIViewContentModeScaleAspectFit];
- Hacer una "imagen estirada":
UIImage *stretchImage = [updatedItem.thumbnail stretchableImageWithLeftCapWidth:0 topCapHeight:0];
Respuestas:
Si realmente desea escalar una imagen, hágalo, pero debe cambiar su tamaño antes de usarla. Cambiar su tamaño en tiempo de ejecución solo perderá ciclos de CPU.
Esta es la categoría que estoy usando para escalar una imagen:
UIImage + Extra.h
UIImage + Extra.m
Puedes usarlo al tamaño que quieras. Me gusta :
fuente
UIGraphicsBeginImageContext
lugar deUIGraphicsBeginImageContextWithOptions
. Solo lo arreglé.Yo tuve el mismo problema. Simplemente configure el ContentMode de ImageView que está dentro del UIButton.
Espero que esto ayude.
fuente
imageView.contentMode
, el tipoNumber
y el valor1
Ninguna de las respuestas aquí realmente funcionó para mí, resolví el problema con el siguiente código:
También puede hacer esto en Interface Builder.
fuente
Aspect fit
lugar descale to fill
.La forma más sencilla de configurar mediante programación un UIButton imageView en modo de ajuste de aspecto :
Rápido
C objetivo
Nota: Puede cambiar .scaleAspectFit (UIViewContentModeScaleAspectFit) a .scaleAspectFill (UIViewContentModeScaleAspectFill) para establecer un modo de relleno de aspecto
fuente
Tuve problemas con la imagen que no cambiaba de tamaño proporcionalmente, por lo que la forma en que la arreglé fue con inserciones de borde.
fuente
Esto ahora se puede hacer a través de las propiedades UIButton de IB. La clave es configurar su imagen como fondo, de lo contrario no funcionará.
fuente
Ampliando la respuesta de Dave, puede configurar todos
contentMode
los botonesimageView
en IB, sin ningún código, usando Atributos de tiempo de ejecución:1
medioUIViewContentModeScaleAspectFit
,2
significaríaUIViewContentModeScaleAspectFill
.fuente
Si simplemente desea reducir la imagen de su botón:
fuente
1 - Borrar texto predeterminado del botón (importante)
2 - establecer alineación como imagen
3 - establece el modo de contenido como imagen
fuente
Tengo un método que lo hace por mí. El método toma
UIButton
y ajusta el aspecto de la imagen.fuente
La solución más limpia es utilizar Auto Layout . Bajé contenido Prioridad Resistencia a la Compresión de mi
UIButton
y establecer la imagen (no la imagen de fondo ) a través de Interface Builder . Después de eso, agregué un par de restricciones que definen el tamaño de mi botón (bastante complejo en mi caso) y funcionó de maravilla.fuente
Background Image
asegúrese de haber configurado la imagen en la propiedad Imagen, pero no en el Fondo
fuente
La imagen de fondo se puede configurar para escalar el relleno de aspecto con bastante facilidad. Solo necesito hacer algo como esto en una subclase de UIButton:
fuente
Swift 5.0
fuente
Para Xamarin.iOS (C #):
fuente
Solo necesita configurar el modo de contenido de UIButton imageview para tres eventos. -
Tenemos un código para tres eventos bcoz mientras resaltamos o seleccionamos si el tamaño del botón es CUADRADO y el tamaño de la imagen es rectangular, entonces se mostrará una imagen cuadrada en el momento de resaltar o seleccionar.
Estoy seguro de que le funcionará.
fuente