2015-09-29 6 views
0

У меня есть приложение, где все виды - портреты, но только один вид, который является UIWebView, который загружает PDF, должен быть в Пейзаже.Форсировать ориентацию ландшафта для UIWebView?

Мои настройки проекта ниже:

enter image description here

Я попытался следующие:

override func shouldAutorotate() -> Bool { 
    return false 
} 

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
    let orientation: UIInterfaceOrientationMask = [UIInterfaceOrientationMask.Landscape, UIInterfaceOrientationMask.LandscapeLeft] 
    return orientation 
} 

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

Я просто хочу принудительно настроить ориентацию ландшафта для одного интерфейса UIWebView.

EDIT:

enter image description here

Ошибка:

enter image description here

Если его трудно прочитать здесь ошибка:

Поддерживаемые ориентации не имеет общей ориентации с приложением, и [KM_T_World.MainViewController shouldAutorotate] возвращает YES»

ответ

2

Реализовать это в View Controller:

override func viewDidLoad() { 
    super.viewDidLoad() 
    UIViewController.attemptRotationToDeviceOrientation() 
} 

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
    return [UIInterfaceOrientationMask.LandscapeLeft, UIInterfaceOrientationMask.LandscapeRight] 
} 

settings info

+0

спасибо за ответ. Но он все еще отображается в портретной ориентации. – Skywalker

+0

@ user2190986 \t у вас должен быть включен «Пейзаж» для всего приложения в «Info.plist». Тогда это работает.В зависимости от того, сколько у вас ViewControllers и сколько вы хотите быть только портретистом, я бы рекомендовал реализовать только портретную фиксацию в ViewControllers или расширить весь класс для желаемого поведения. – rshev

+0

Благодарим вас за ответ. как я могу реализовать фиксацию портрета? Это то же самое, что и выше, и просто изменить пейзаж на портрет? – Skywalker

0

Используйте этот код:

override func viewDidAppear(animated: Bool) { 
    let value = UIInterfaceOrientation.LandscapeLeft.rawValue 
    UIDevice.currentDevice().setValue(value, forKey: "orientation") 
} 

И ваша ориентация устройства должно быть:

enter image description here

Результат:

enter image description here

Sample для получения дополнительной информации.

UPDATE:

Это просто, чтобы зафиксировать ориентацию определенной точки зрения, добавив следующий код:

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask{ 

    return UIInterfaceOrientationMask.Portrait 
} 
+0

Благодарим вас за ответ. Ваш ответ работает, но единственная проблема заключается в том, что включение ориентации устройства в ландшафт в настройках Xcode даст пользователю возможность повернуть его устройство и изменить ориентацию всех видов в приложении. Я хочу показать только один пейзаж в пейзаже и оставшийся портрет. – Skywalker

+0

Отметьте обновленный ответ .. :) –

+0

Благодарим за ответ. Ваш обновленный ответ работает хорошо. Но он работает во всех представлениях, кроме UIWebView. Он не будет вращать пейзаж. Я хорошо поворачиваю все остальные виды, но не UIWebView. Также он работает только в том случае, если опция ландшафта отмечена в xCode – Skywalker

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