Как получить реальный размер преобразованного CALayer? - PullRequest
7 голосов
/ 04 апреля 2011

У меня есть экземпляр 200x200 pixel CALayer, к которому я применил два преобразования:

  • уменьшено до 50%
  • применил трехмерную перспективу

Теперь я хочу выровнять преобразованный слой с другим слоем. Для этого мне нужен размер (ширина и высота) преобразованного слоя.

Проблема в том, что layer.bounds по-прежнему возвращает 200x200 для слоя, но из-за преобразования перспективы фактическая видимая ширина меньше, а высота больше 200. Кстати, границы уровня представления возвращают 0.

Есть ли способ, как я могу точно определить размер преобразованного CALayer точно так, как он нарисован на экране?

Спасибо, Марк.

1 Ответ

11 голосов
/ 05 апреля 2011

Наконец-то понял: bounds остается неизменным при применении преобразования, но что меняется, так это свойство слоя frame.

Решение - использовать layer.frame.size вместо layer.bounds.size.

Это упоминается в Руководстве по программированию базовой анимации:

Слои имеют неявный фрейм, который является функцией свойств position, bounds, anchorPoint и transform.

...