2016-06-14 2 views
0

У меня есть viewcontroller, который содержит только webview. Однако содержимое этого веб-представления очень широкое, поэтому мне нужно показать это в режиме landscape.Как отобразить веб-просмотр в режиме просмотра ландшафта в swift?

Вопрос в том, как повернуть веб-обзор или контроллер всего вида?

Я попытался изменить orientations подобное, но не получилось:

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

override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
    return .Landscape 
} 
+0

Вы хотите, чтобы запустить его всегда в ландшафтном? –

+0

Да, нужно заблокировать этот конкретный viewcontroller в ландшафте. –

+0

override shouldAutorotate in view controller и return true –

ответ

0

в AppDelegate

func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask { 
    return UIInterfaceOrientationMask.Landscape 
} 
0

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

Добавьте это в свою ViewDidLoad() на странице, которую вы хотите иметь в ландшафте.

let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
      appdelegate.shouldRotate = false 

      UIDevice.currentDevice().setValue(UIInterfaceOrientation.Landscape.rawValue, forKey: "orientation") 

Добавить следующие функции в ваш класс.

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

    override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
     return [UIInterfaceOrientationMask.Landscape] 
    } 


    override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation { 
     // Only allow Portrait 
     return UIInterfaceOrientation.Landscape 
    } 

Когда вы покидаете страницу, разблокировать его с помощью добавления следующего кода:

override func viewWillDisappear(animated: Bool) { 
     let appdelegate = UIApplication.sharedApplication().delegate as! AppDelegate 
     appdelegate.shouldRotate = true 
    } 

В вашем AppDelegate, поместите следующий код:

var shouldRotate = true 

    //MARK: - Func to rotate only one view controller 
    func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask { 
     if (shouldRotate == true){ 
      return UIInterfaceOrientationMask.All 
     } 

     return UIInterfaceOrientationMask.Landscape 

    } 
+0

Значение типа 'AppDelegate' не имеет члена 'shouldRotate'. Вы уверены в этом методе? –

+0

добавил код для appdelegate, забыл положить его туда, извините: D – SoundShock

+0

@ TheCook сделал это сработало? Если да, пожалуйста, отметьте ответ, спасибо! – SoundShock

0

Он работает отлично:

Положить это в viewDidLoad:

let value = UIInterfaceOrientation.LandscapeLeft.rawValue 
UIDevice.currentDevice().setValue(value, forKey: "orientation") 

и

override func shouldAutorotate() -> Bool 
{ 
    return true 
} 
Смежные вопросы