Изменение размера вида при изменении ориентации
-
20-09-2019 - |
Вопрос
Я хочу, чтобы мой подкласс UIView вел себя так, чтобы при установке в книжной ориентации он имел определенный размер, а при установке в альбомной ориентации - другой.
Возможно ли, чтобы представление указывало контроллеру представления, который изменяет его размер при изменении ориентации, что оно имеет этот "идеальный размер"?
Чтобы внести ясность, я уверен, что это не то, что можно сделать с помощью маски автоматического изменения размера.Я также подумал, что этот размер подходит:это было бы то, что мне нужно, но я не видел, чтобы это вызывалось при изменении ориентации.
Я также знаю, что я могу сделать это, переопределив layoutSubviews супервизора (или, возможно, какой-либо другой метод контроллера представления, но я хотел бы, чтобы это поведение было встроено в представление для облегчения повторного использования.
Решение
Вы получаете несколько сообщений при вращении устройства:
- shouldAutorotateToInterfaceOrientation:;
- willRotateToInterfaceOrientation:duration:;
- didRotateFromInterfaceOrientation:
Вы можете использовать их для изменения макета вашего представления при повороте пользователя.
Если вы не хотите использовать контроллер представления, вы можете зарегистрироваться для получения уведомления UIDeviceOrientationDidChangeNotification.