2015-04-15 3 views
4

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

Я пытаюсь разработать приложение в Swift (iOS 8), в котором только один контроллер вида можно просматривать во всех ориентациях других только в портрете.

Для этого я включил режим Portrait в Target-> General-> Orientation устройства (потому что я хочу, чтобы приложение работало только в портретном режиме, за исключением одного контроллера вида).

Я добавил ниже кода контроллера представления, что я хочу работать во всех направлениях:

override func supportedInterfaceOrientations() -> Int { 
    return Int(UIInterfaceOrientationMask.All.rawValue) 
} 

override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation { 
    return UIInterfaceOrientation.LandscapeLeft; 
} 

override func shouldAutorotate() -> Bool { 
    return true; 
} 

Но не может повернуть его в ландшафтном режиме.

ответ

2

Выполните следующие действия:

  • включить желаемых ориентации в экране General Info
  • в каждом ViewController.swift, переопределения функция авторотации с истинным или ложным (истинно тот, который должен вращаться, ложные для других)

Надежда, что помогает :)

+0

'override' autorotation внутри' viewWillAppear'? Как это возможно? –

+0

Thaaaaat является правильным. Хорошо, позвольте мне исправить это. Спасибо, что указали, что это – LinusGeffarth

+0

Это не работает. –

0

Попробуйте это в perticular ViewController, который вы хотите во всех ориентации, в viewWillAppear:

let value = UIInterfaceOrientationMask.All.rawValue 

UIDevice.currentDevice().setValue(value, forKey: "orientation") 

и не забывайте, чтобы ориентации в мишенями> Общие-> Устройство ориентации

Отдай попробовать

+0

Я уже пробовал это. Он не работает –

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