2011-12-13 8 views
41

¿Cuál es la diferencia entre los límites y el marco? De hecho, ¿por qué existen los "límites"? El tamaño de 'límites' es igual al tamaño del marco, y el origen del límite siempre debe ser 0,0.Límites de NSView frente al marco

+1

Posible duplicado de [Cocoa: ¿Cuál es la diferencia entre el marco y los límites?] (Http://stackoverflow.com/questions/1210047/cocoa-whats-the-difference-between-the-frame-and-the -bounds) – daisy

Respuesta

90

de la guía View and Window Architecture de programación para iOS:

Un objeto pistas de vista de su tamaño y ubicación usando su marco, límites, y centro de propiedades:

El marco propiedad contiene el rectángulo marco , que especifica el tamaño y la ubicación de la vista en el sistema de coordenadas de su supervista.

El límites propiedad contiene el rectángulo de límites, que especifica el tamaño de la vista (y su origen de contenido) en el propio sistema local coordenadas del punto de vista.

La propiedad del centro contiene el punto central conocida de la vista en el sistema de coordenadas de supervista.

Aquí es una buena visualización de esa explicación:

enter image description here

+7

Correcto. Ver mi pregunta Los límites siempre serán 0,0 para el origen, y los tamaños son idénticos. Entonces, ¿por qué tener límites en absoluto, dado que el marco incluye toda la información de todos modos? – David

+2

Nunca he visto esto realmente. Pero parece claro que necesitas dos referencias. Debido a que 40,40 no sería correcto para el origen del contenido de la vista, pero corrija una referencia de dónde está la vista dentro de la super visión. También creo que la vista necesita saber sobre su propio espacio de contenido (límites) y dar información de dónde debería estar (Marco). La información puede tener el mismo aspecto pero en realidad son dos cosas diferentes. Mírelos como un marco de referencia de las vistas de dónde se encuentra. Y son los límites que se forman a sí mismo – markhunte

+10

Si bien esta respuesta es generalmente correcta, ya que esta es una pregunta de Mac (está etiquetada 'NSView'), la documentación relevante es la [Ver la Guía de programación de Cocoa] (http://developer.apple.com /library/mac/#documentation/Cocoa/Conceptual/CocoaViewsGuide/Introduction/Introduction.html) en lugar de la versión de iOS a la que se ha vinculado. Tenga en cuenta que en Mac el sistema de coordenadas se voltea por defecto, con el punto de origen en la esquina inferior izquierda. –

8

Los documentos de manzana en la primera respuesta no cubren lo que ocurre con el marco y los límites después de girar a la orientación horizontal. Para que sea más completo, debe saber que el marco de la ventana y la vista raíz no cambian después de la rotación, pero sí los límites. See this article para un poco más de detalle y tenga cuidado de usar el marco como referencia para cualquier cosa que no sea la orientación vertical.

Desde el artículo:

Si el controlador de vista tiene la visión no-ventana de nivel superior (es decir, es la parte inferior más-controlador de vista), entonces

self.frame 

es siempre en orientación vertical. ¿Qué? Sí, siempre en retrato - qué cambios son la transformación de su vista. Por lo que su

self.bounds 

es siempre exacta (teniendo en cuenta el último punto), pero

self.frame 

puede o no dar a la relación de aspecto que el usuario está viendo realmente, desde el marco de cada vista es informada en términos de las coordenadas de la supercomposición, y tiene en cuenta las transformaciones aplicadas a la vista .

9

El origen de atado no siempre es 0,0. Es fácil comprender la diferencia entre el marco y los límites, si observa cómo el cambio limita la propiedad de UIScrollView durante el desplazamiento.

Por ejemplo, tiene UIScrollView con marco (0, 0, 320, 460), límites (0, 0, 320, 460) y ContentSize (640, 460).Su marco siempre será (0, 0, 320, 460), pero la coordenada X de los límites cambiará dependiendo de la distancia de desplazamiento.

Puede ser útil si quiere cambiar algo en usted UIScrollView (crear y eliminar páginas dinámicamente, por ejemplo), por lo que desea saber la distancia de desplazamiento.

1

Un marco de vistas es del tamaño de un rectángulo en el que puede caber por completo. Siempre parece que los límites y el marco son los mismos, pero ese no es el caso. ¡Considera un cuadrado que simplemente gira alrededor de 45 grados!

Aquí el marco de este cuadrado rotado será el rectángulo para rellenarlo por completo y por lo tanto diferirá de los límites de este objeto.

P.S principalmente en marcos y límites de objetos girados tienden a diferir.

Cuestiones relacionadas