Pregunta sobre ios, calayer, frame, bounds – CALayer frame.size no es igual a bound.size

3

Sucedió algo extraño para mí en CALayer. Y finalmente encontré que el tamaño de fotograma de CALayer no era igual a sus límites, que no podía entender. Sé que el marco está en el sistema de coordenadas del super y sus límites son sus propias coordenadas el caso habitual es frame.origin no es igual a limits.origin pero frame.size es igual a bound.size.

Transformar en super capa y en sí mismo. keywind
¿Aplicaste y te transformaste en la sub-vista? como la rotacion? dhilipsiva

Tu respuesta

1   la respuesta
7

como dice Apple en la documentación de la propiedad frame.

Advertencia Si la propiedad de transformación no es la transformación de identidad, el valor de esta propiedad no está definido y, por lo tanto, debe ignorarse.

...

Los cambios a esta propiedad pueden ser animados. Sin embargo, si la propiedad de transformación contiene una transformación sin identidad, el valor de la propiedad de marco no está definido y no debe modificarse. En ese caso, puede reposicionar la vista usando la propiedad del centro y ajustar el tamaño usando la propiedad de los límites en su lugar.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html

Si no tiene una transformación aplicada, entonces el origen puede ser diferente, pero el tamaño debe seguir siendo el mismo que el ajuste de uno y el otro.

El tamaño del rectángulo de los límites se acopla al tamaño del rectángulo del marco, de modo que los cambios de uno en uno afectan al otro.

No es necesario ignorar el marco cuando se transforma una capa. De hecho, el marco solo representará el rectángulo más pequeño que contiene completamente la capa transformada, lo cual es útil. Los límites permanecen sin cambios independientemente de la transformación. Así que solo son dos representaciones diferentes del espacio de coordenadas, dependiendo de lo que te interese. Shannon Potter
Si el valor del marco no está definido y, por lo tanto, debe ignorarse, entonces, ¿cómo decide el sistema dónde dibujar la capa? De hecho, lo que me confunde es que mi capa siempre es más grande que los límites de la capa. keywind
usa la propiedad del centro, "En ese caso, puedes reposicionar la vista usando la propiedad del centro y ajustar el tamaño usando la propiedad de los límites". Todo está en la documentación. Y tiene mucho sentido, cuando giras algo, el "cuadrado" que lo contiene debe crecer, por lo tanto, los límites definen el tamaño del cuadrado interior y el marco del cuadrado que contiene. Pochi
Si yo entiendo. Debido a que la escala es 2x, los límites también se muestran 2x. por ejemplo, el tamaño (100,100) se mostrará como tamaño (200,200) keywind

Preguntas relacionadas