Есть ли способ перехватить событие WillRotateToInterfaceOrientation из UIView? - PullRequest
6 голосов
/ 01 сентября 2009

каждый UIViewController имеет метод willRotateToInterface.

Возможно ли сделать это и в UIView?

Соответствует ли это идее контроллера вида модели?

Единственный способ, которым я могу придумать, - это отправить событие из UIViewController в UIView.

Существует ли глобальная переменная для текущей ориентации?

Ответы [ 3 ]

17 голосов
/ 01 сентября 2009

Наблюдать UIDeviceOrientationDidChangeNotification:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];

...

- (void)orientationDidChange:(NSNotification *)note
{
    NSLog(@"new orientation = %d", [[UIDevice currentDevice] orientation]);
}

Ссылка на класс UIDevice

Следует отметить, что вам нужно добавить -beginGeneratingDeviceOrientationNotifications, когда вы хотите, чтобы эти уведомления отправлялись, и позвонить по номеру -endGeneratingDeviceOrientationNotifications, когда вы хотите, чтобы они прекратились. Генерация этих элементов влияет на батарею, поэтому делать это следует только тогда, когда вы видите на экране. UIViewController делает все это за вас, поэтому, если у вас есть контроллер представления, стоит позволить ему выполнить свою работу.

3 голосов
/ 02 сентября 2009

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

Он вызывается всякий раз, когда изменяется размер представления, что обычно происходит при повороте представления.

2 голосов
/ 01 сентября 2009

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

[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:@"UIDeviceOrientationDidChangeNotification" object:nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...