2010-06-03 4 views
3

Мне было любопытно узнать, есть ли способ определить ориентацию экрана на iPhone/iPad.Как я могу запросить текущую ориентацию экрана iPhone/iPad?

В настоящее время я считаю себя установкой переменной-члена, когда это сообщение называется:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    self.orientation = interfaceOrientation; 
    return YES; 
} 

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

ответ

11

UIViewController обладает свойством interfaceOrientation.

Не путайте ориентацию в UIDevice, которая не является ориентацией интерфейса, а физической ориентацией.

+0

Это тонкое, но важное различие. Спасибо за ответ. – ra9r

+0

обесценивается в iOS8. Документы рекомендуют: 'viewWillTransitionToSize: withTransitionCoordinator:' – SimplGy

1

Вы можете сделать [[UIDevice currentDevice] orientation].

+1

Это * не * правильный способ ориентации интерфейса. Из руководства: «Свойство ориентации использует эти константы для идентификации ориентации устройства. Эти константы определяют физическую ориентацию устройства и не привязаны к ориентации пользовательского интерфейса вашего приложения». – Eiko

11

Используйте это, если у вас есть строка состояния сверху.

UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; 
if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown) { 
    // portrait    
} else { 
    // landscape 
} 
+0

Возвращает ли он ориентацию моего 'UIView'? – iOmi

Смежные вопросы