2015-01-25 1 views
0

Мое приложение позволяет использовать все четыре ориентации, но rootviewcontroller должен допускать только портретную ориентацию.Как заставить портретную ориентацию, если устройство находится в альбомной ориентации, когда приложение запускается в iOS 8

Я переопределяю метод supportedInterfaceOrientations в моем корневом контроллере, но если устройство удерживается в альбомной ориентации, когда приложение запускается, контроллер просмотра отображается неправильно в альбомной ориентации, даже если разрешена только портретная ориентация. Это проблема iOS 8.

override func supportedInterfaceOrientations() -> Int { 
    return UIInterfaceOrientation.Portrait.rawValue 
} 

ответ

1

В ViewController:

- (BOOL)shouldAutorotate 
{ 
    return YES; 
} 

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return UIInterfaceOrientationMaskPortrait; 
} 

Swift версия:

override func shouldAutorotate() -> Bool { 
    return true 
} 
override func supportedInterfaceOrientations() -> Int { 
    return Int(UIInterfaceOrientationMask.Portrait.rawValue) 
} 
+0

Мне нужно выбрать все ориентации, потому что диспетчеру пару требуется ориентация по ландшафту. – MobileDev98

+0

@ MobileDev98 Я думаю, что вы используете 'supportedInterfaceOrientaions' неправильно. Вы должны использовать 'UIInterfaceOrientationMask.Portrait' вместо' UIInterfaceOrientation.Portrait'. Проверьте мое новое редактирование. – skyline75489

+0

переопределение функ supportedInterfaceOrientations() -> Int { возвращение Int (UIInterfaceOrientationMask.Portrait.rawValue) | Int (UIInterfaceOrientationMask.PortraitUpsideDown.rawValue) } – MobileDev98

0

Для меня реализации AppDelegate supportedInterfaceOrientationsForWindow функции приложения сделал трюк

func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow) -> Int { 

    if let viewController = self.window?.rootViewController?.presentedViewController as? PortraitViewController{ 

     return Int(UIInterfaceOrientationMask.Portrait.rawValue) 
    }else{ 

     return Int(UIInterfaceOrientationMask.All.rawValue) 
    } 

} 

где PortraitViewC ontroller следует заменить на имя вашего контроллера корневого класса.