2012-01-12 3 views
0

Я хотел был бы иметь возможность осмотреть экземпляр UIView, который может быть или не быть повернут с его первоначальной ориентации (например, пользователем, вращающим устройство, например) и определить, что «Истинная» ширина и высота. «true» здесь означает, если бы взгляд на портретно-ориентированный iPad был 768x1024 перед поворотом, после того, как он повернут вбок, я бы вычислил, что новая ширина была 1024, а новая высота была 768.Обнаружение повернутой ширины/высоты UIView после изменения ориентации

Похоже, что если я применим преобразование вида в его свойство кадра выглядит следующим образом:

CGRect rotated = CGRectApplyAffineTransform([myview frame], [myview transform); 

Я получаю желаемый результат. Однако в документации Apple указывается, что UIView :: frame не определен, если преобразование для представления не является преобразованием идентичности, поэтому, возможно, не стоит полагаться на этот расчет?

ответ

5

view.bounds возвращает прямоугольник вы хотите

view.frame возвращает прямоугольник с transfrom приложенного к границам вместе с положением.

+0

это не дало правильных значений –

+0

Оценки не помогают, если вы также трансформируете масштаб. Он прочитает право нетрансформированного UIview – DTDev

-1

Ну из-за отсутствие ввода, я собираюсь пойти с моим решением, используя:

CGRect rotated = CGRectApplyAffineTransform([myview frame], [myview transform);

Чтобы получить правильно ориентированные ограничивающий. Если у кого-то есть другое решение или вы можете подтвердить, что это безопасно, я дам им ответ.

Смежные вопросы