cocoa touch - sierra - ¿Cuál es la propiedad "Mode" en Interface Builder que ofrece "Escala para rellenar", "Ajuste de aspecto", etc.?
xcode features (3)
La propiedad de modo de contenido de una vista indica cómo se debe diseñar su contenido. En Interface Builder, los diversos modos se pueden seleccionar en el Inspector de atributos.
Usemos dos vistas de imágenes para ver cómo funcionan los diversos modos.
Escalar para llenar
Las alturas y anchuras de la imagen se extienden para coincidir con el tamaño del UIImageView
.
Ajuste de aspecto
El lado más largo (de alto o ancho) de la imagen se estira para que coincida con la vista. Esto hace que la imagen sea lo más grande posible mientras se muestra toda la imagen y no se distorsiona la altura o el ancho. ( UIImageView
fondo UIImageView
en azul para que su tamaño sea claro).
Aspecto relleno
El lado más corto (alto o ancho) de la imagen se estira para que coincida con la vista. Al igual que "Ajuste de aspecto", las proporciones de la imagen no se distorsionan desde su relación de aspecto original.
Redibujar
Redraw es solo para vistas personalizadas que necesitan hacer su propia escala y cambio de tamaño. No estamos utilizando una vista personalizada, por lo que no deberíamos usar Redraw. Tenga en cuenta que aquí UIImageView
simplemente nos da el mismo resultado que Scale to Fill, pero está haciendo más trabajo detrás de escena.
Acerca de Redraw, la documentation dice:
Los modos de contenido son buenos para reciclar el contenido de su vista, pero también puede establecer el modo de contenido en el valor
UIViewContentModeRedraw
cuando desee que sus vistas personalizadas seUIViewContentModeRedraw
a dibujar durante las operaciones de escalado y cambio de tamaño. Configurar el modo de contenido de su vista a este valor fuerza al sistema a llamar al métododrawRect:
su vista en respuesta a los cambios de geometría. En general, debe evitar usar este valor siempre que sea posible, y ciertamente no debe usarlo con las vistas estándar del sistema.
Centrar
La imagen se centra en la vista, pero la longitud y el ancho de la imagen no se alargan.
Parte superior
El borde superior de la imagen se centra horizontalmente en la parte superior de la vista, y la longitud y el ancho de la imagen no se estiran.
Fondo
El borde inferior de la imagen se centra horizontalmente en la parte inferior de la vista, y la longitud y el ancho de la imagen no se estiran.
Izquierda
El borde izquierdo de la imagen se centra verticalmente a la izquierda de la vista, y la longitud y el ancho de la imagen no se estiran.
Derecha
El borde derecho de la imagen se centra verticalmente a la derecha de la vista, y la longitud y el ancho de la imagen no se estiran.
Arriba a la izquierda
La esquina superior izquierda de la imagen se coloca en la esquina superior izquierda de la vista. La longitud y el ancho de la imagen no se alargan.
Parte superior derecha
La esquina superior derecha de la imagen se coloca en la esquina superior derecha de la vista. La longitud y el ancho de la imagen no se alargan.
Abajo a la izquierda
La esquina inferior izquierda de la imagen se coloca en la esquina inferior izquierda de la vista. La longitud y el ancho de la imagen no se alargan.
Abajo a la derecha
La esquina inferior derecha de la imagen se coloca en la esquina inferior derecha de la vista. La longitud y el ancho de la imagen no se alargan.
Notas
Si el contenido (en nuestro caso, la imagen) tiene el mismo tamaño que la vista (en nuestro caso, el
UIImageView
), entonces cambiar el modo de contenido no hará una diferencia notable.Consulte this y this pregunta para una discusión sobre modos de contenido para vistas distintas de
UIImageView
.En Swift, para establecer el modo de contenido programáticamente, haga lo siguiente:
imageView.contentMode = UIViewContentMode.ScaleToFill imageView.contentMode = UIViewContentMode.ScaleAspectFit imageView.contentMode = UIViewContentMode.ScaleAspectFill imageView.contentMode = UIViewContentMode.Redraw imageView.contentMode = UIViewContentMode.Center imageView.contentMode = UIViewContentMode.Top imageView.contentMode = UIViewContentMode.Bottom imageView.contentMode = UIViewContentMode.Left imageView.contentMode = UIViewContentMode.Right imageView.contentMode = UIViewContentMode.TopLeft imageView.contentMode = UIViewContentMode.TopRight imageView.contentMode = UIViewContentMode.BottomLeft imageView.contentMode = UIViewContentMode.BottomRight
Me pregunto de qué se trata el menú desplegable "Modo". Contiene "Escala para rellenar", "Ajuste de aspecto", etc. Nunca tuve que cambiarlo hasta ahora, aún tengo curiosidad por saber para qué se puede usar. ¿Alguien puede explicar?
Ver la guía de programación incluye detalles de lo que está preguntando. Si te desplazas hacia abajo a la sección llamada " Modos de contenido ", encontrarás lo que estás buscando.
Básicamente según Apple:
"Cada vista tiene un modo de contenido que controla cómo la vista recicla su contenido en respuesta a cambios en la geometría de la vista [...] el valor en la propiedad contentMode determina si el mapa de bits debe escalarse para ajustarse a los nuevos límites o simplemente anclado a una esquina o el borde de la vista ".
http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/
debería darte las ideas básicas muy bien.