2011-01-26 3 views

Respuesta

26

View Programming Guide entra en detalles sobre lo que pregunta. Si se desplaza hacia abajo a la sección llamada "Content Modes", encontrará lo que está buscando.

Básicamente según Apple:

"Cada punto de vista tiene un modo de contenido que controla la forma en la vista recicla su contenido en respuesta a los cambios en la geometría de la vista [...] el valor de la propiedad determina contentMode si el mapa de bits debe escalarse para ajustarse a los nuevos límites o simplemente estar anclado a una esquina o al borde de la vista ".

5
+0

Por lo tanto, sólo se aplica a UIImageViews? ¿Por qué está entonces disponible para todas las UIViews? – Krumelur

+1

en realidad se deriva de UIView. Verifique la documentación oficial. http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/instp/UIView/contentMode – Bourne

+0

Sí, leí todo eso y sé que deriva de UIView pero nunca he visto ningún efecto al cambiar el modo. De ahí mi pregunta: ¿veré un efecto cuando NO trate con UIImageView? – Krumelur

50

El content mode property 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.

enter image description here

Vamos a usar dos vistas de imágenes para ver cómo los diferentes modos de trabajo.

enter image description here

Escala Completa a

enter image description here

Las alturas de imagen y anchuras se estiran para que coincida con el tamaño de la UIImageView.

Aspecto Fit

enter image description here

El lado más largo (ya sea la altura o anchura) 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. (Fijo el fondo UIImageView a azul por lo que su tamaño es clara.)

Aspecto Rellena

enter image description here

El lado (ya sea la altura o anchura) más corto 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.

Redraw

enter image description here

Redraw es sólo para las vistas personalizadas que necesitan para 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 Escalar para llenar, pero está haciendo más trabajo detrás de escena.

Sobre Redraw, la documentation dice:

modos contenido son buenos para reciclar el contenido de la vista, pero también se puede establecer el modo de contenido al valor UIViewContentModeRedraw cuando se desea específicamente sus vistas personalizadas para redibujar ellos mismos durante las operaciones de escalamiento y cambio de tamaño. Configurar el modo de contenido de su vista a este valor obliga al sistema a llamar al método drawRect: de 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.

Center

enter image description here

La imagen se centra en la vista, pero la longitud y anchura de la imagen no se estiran.

Top

enter image description here

El borde superior de la imagen se centra horizontalmente en la parte superior de la vista, y la longitud y anchura de la imagen no se estiran.

Bottom

enter image description here

El borde inferior de la imagen se centra horizontalmente en la parte inferior de la vista, y la longitud y anchura de la imagen no se estiran.

izquierda

enter image description here

El borde izquierdo de la imagen está centrada verticalmente en la izquierda de la vista, y la longitud y anchura de la imagen no se estiran.

derecho

enter image description here

El borde derecho de la imagen se centra verticalmente a la derecha de la vista, y la longitud y anchura de la imagen no se estiran.

Arriba a la izquierda

enter image description here

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.

Arriba a la derecha

enter image description here

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

enter image description here

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

enter image description here

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) es del mismo tamaño que la vista (en nuestro caso el UIImageView), a continuación, cambiar el modo de contenido no hará ninguna diferencia notable.

  • Consulte this y pregunta para una discusión sobre los modos de contenido para las vistas que no sean UIImageView.

  • En Swift, al set para establecer el modo de contenido de programación de hacer 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 
    
+3

Gran explicación detallada. Todos los ejemplos que veo aquí son sobre 'UIImageView' pero Apple expone la propiedad en' UIView'; eso es lo que causó la confusión. – Krumelur

+0

@Krumelur, Después de haber terminado mi respuesta y volver a leer su pregunta y comentarios, tuve la [misma pregunta] (http://stackoverflow.com/questions/32152138/setting-content-mode-for-something-besides- uiimageview-in-ios). Hay algunas buenas explicaciones [aquí] (http://stackoverflow.com/questions/12827710/what-type-of-contents-uiviewcontentmode-mode-refers-to). – Suragch

+3

Explicación fantástica. Ver todos los ejemplos visuales es muy útil. – Stonetip

Cuestiones relacionadas