2011-04-04 16 views
6

I tienen una instancia 200x200 pixelCALayer a la que he aplicado dos transformaciones:¿Cómo obtener el tamaño real de CALayer transformado?

  • reducido para 50%
  • aplica una perspectiva 3D

Ahora quiero alinear la capa transformada con otra capa Para hacer eso necesito el tamaño (ancho y alto) de la capa transformada.

El problema es que layer.bounds aún devuelve 200x200 para la capa, pero debido a la transformación de perspectiva, el ancho visible real es menor y la altura es mayor que 200. Los límites de la capa de presentación devuelven 0, por cierto.

¿Hay alguna manera de cómo puedo determinar el tamaño exacto de una transformada CALayer exactamente como se dibuja en la pantalla?

Gracias, Mark.

Respuesta

11

Finalmente lo descubrió: la bounds permanecen sin cambios cuando se aplica una transformación, pero lo que cambia es la propiedad de la capa frame.

La solución es usar layer.frame.size en lugar de layer.bounds.size.

Esto se menciona en la Guía de programación Core Animación:

capas tienen un marco implícita de que es una función de la posición, límites, Anchorpoint, y transforman propiedades.

Cuestiones relacionadas