2010-03-17 3 views
1

Я хочу, чтобы мой подкласс UIView вел себя так, чтобы, когда он установлен в портретной ориентации, имеет определенный размер и другой размер при установке в ландшафтном режиме.Изменение размера вида при изменении ориентации

Возможно ли, чтобы представление отображало контроллер вида, который изменяет его размер при изменении ориентации, что у этого «идеального размера»?

Чтобы уточнить, я уверен, что это не то, что можно сделать с помощью маски авторезистирования. Я также думал, что sizeThatFits: будет то, что мне нужно, но я не видел, чтобы его вызывали, когда ориентация изменилась.

Я также знаю, что я могу получить это сделано переопределение layoutSubviews из надтаблицы (или, может быть какой-либо другой метод контроллера представления, но я хотел бы, чтобы это поведение, внедренный в целях облегчения повторного использования.

ответ

2

вы получаете несколько сообщений, когда устройство вращается:.

- shouldAutorotateToInterfaceOrientation:; 
- willRotateToInterfaceOrientation:duration:; 
- didRotateFromInterfaceOrientation: 

вы можете использовать их для повторного создания макета вашего взгляда, когда пользователь поворачивает

Если вы не хотите использовать контроллер представления, вы можете зарегистрируйтесь для UIDeviceOrientat ionDidChangeNotification уведомление.

+1

Спасибо, но AFAIK это методы контроллера вида, а не вид, который означает, что вид не одинок, и это то, что я ищу. –

+0

Исправить. Я изменил свой ответ, чтобы обсудить UIDeviceOrientationDidChangeNotification. –