управление изменениями ориентации из подпредставления - PullRequest
0 голосов
/ 13 февраля 2012

Имейте очень большую программу, где всегда есть суперпредставление, которое просто включает в себя пользовательский контроллер сегмента.Это представление находится в верхней части экрана и управляет навигацией несколькими способами.

Таким образом, проблема возникла только в нескольких выбранных контроллерах представления, где все было создано программно на 100%.По сути, CGRect не определяются в свойстве динамических координат.Но не пересчитываются при смене ориентации.У кого-нибудь есть простой способ контролировать это в подпредставлении?Я собираюсь кодировать что-то в суперпредставлении, чтобы перейти к ориентации к другим подпредставлениям ... но должен быть лучший способ.Идеи?

1 Ответ

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

Пара указателей:

Вы можете использовать маски с автоматическим изменением размера, чтобы определить, что происходит с вашими видами при изменении их границ (т. Е. При изменении ориентации). Таким образом, UIViewAutoresizingFlexibleWidth означает, что ваш вид будет «растягиваться» пропорционально суперпредставлению при изменении границ. UIViewAutoresizingFlexibleLeftMargin означает, что ваш вид будет эффективно выровнен по правому краю, так как левое поле будет регулироваться в соответствии с шириной и т. Д. И т. Д.

Иногда масок с автоматическим изменением размера недостаточно - возможно, вам придется изменить содержимое представления по ориентации или выполнить сложную анимацию. В этом случае вы используете метод willAnimateRotationToInterfaceOrientation в вашем контроллере представления. Ваши подпредставления могут иметь пользовательский метод adjustForOrientation, который вы написали и который можно вызвать при вызове willAnimateRotation....

Наконец, в iOS 5 вы можете фактически вкладывать контроллеры представления в контроллеры представления, и в этом случае события ориентации проходят автоматически ... но это, вероятно, излишне сложно для того, что вы пытаетесь сделать.

...