Рамка родительского окна UIView и связанные размеры при вращении iPad - PullRequest
1 голос
/ 13 августа 2010

У меня есть следующая строка кода, вызванная после того, как жест касания завершен:

CGRect parentBounds = self.view.bounds;
CGRect parentFrame = self.view.frame;

, когда iPad размещен вертикально, и parentFrame, и parentBounds имеют одинаковые размеры w: 768 ч: 1004(или что-то похожее на это), но при повороте parentBounds равен 1024x748, а parentFrame - 768x1024.Это нормальное поведение?Я думал, что понял понятия между рамками и границами (и как они соотносятся друг с другом) ... но теперь я действительно запутался.

Может ли кто-нибудь объяснить, что происходит с рамкой и границами окна (superview) когда происходит вращение?

Ответы [ 3 ]

2 голосов
/ 13 августа 2010

Окно не меняет ориентацию; корневой вид делает. Это делается путем применения преобразования представления (self.view.transform). Вы не должны вызывать frame, если transform не является CGAffineTransformIdentity.

0 голосов
/ 13 января 2012

От Apple PhotoScroller пример кода:

Мы должны использовать границы представления прокрутки, а не рамки, чтобы вычислить размещение страницы.Когда устройство находится в горизонтальной ориентации, рамка все еще будет в портретной ориентации, потому что pagingScrollView является представлением контроллера корневого представления, поэтому его рамка находится в координатном пространстве окна, которое никогда не поворачивается.Однако его границы будут горизонтальными, поскольку к нему применено преобразование вращения.

Короче говоря, на раму представления не влияют повороты устройства, но его границы равны.

0 голосов
/ 13 августа 2010

Это не полный ответ, но может помочь, если вы не получите что-то лучше: когда устройство поворачивается, рамка окна верхнего уровня не меняется. Вместо этого применяется преобразование, которое поворачивает все на 90 градусов (или 180 градусов), а затем размер подвидов будет изменен для соответствия новой системе координат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...