«обновить» вид на поворот устройства - PullRequest
6 голосов
/ 23 сентября 2010

У меня настроен вид в viewDidLoad.Все различные кадры и подобные подпредставления были определены относительно self.view.Следовательно, не имеет значения, какой размер self.view означает, что подпредставления всегда будут уменьшаться или расширяться, чтобы соответствовать (как это было бы).

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

Вызов [self viewDidLoad]; приводит в соответствие все элементы, но помещает новый слой поверх предыдущего макета (что очевидно ... но я простоговоря, чтобы объяснить, что я имею в виду).

Есть ли способ обновить кадры подпредставлений или что-то?Я не знаю, что делают другие люди, если честно.Я собираюсь поместить ВСЕ мои представления в файл .h как свойства и делать все вручную на didRotate...?

1 Ответ

6 голосов
/ 23 сентября 2010

У вас есть три варианта:

  1. Если маски автоматического изменения размера достаточно хороши для позиционирования ваших видов, назначьте правильную маску автоматического изменения размера каждому подпредставлению при их создании.

  2. Если масок авторазмера недостаточно, переопределите willAnimateRotationToInterfaceOrientation:duration: и измените положение ваших подпредставлений в этом методе.Я хотел бы создать собственный метод, который принимает ориентацию в качестве параметра и отвечает за размещение всех подпредставлений.Затем вы можете вызвать этот метод из willAnimateRotationToInterfaceOrientation:duration: и из viewDidLoad.

  3. Вы также можете создать собственный подкласс UIView и сделать представление вашего контроллера представления экземпляром этого класса.Затем переопределите layoutSubviews, чтобы расположить все подпредставления в зависимости от размера представления.Этот подход подразумевает, что ваш пользовательский вид управляет его подпредставлениями вместо контроллера представления.

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