2016-05-11 3 views
0

Как я могу изменить ориентацию устройства на портрет с кодом?Изменить ориентацию устройства, быстро, iOS,

Чтобы открыть камеру и библиотеку на портрете с контроллера вида.

Я хотел бы включить в эту кнопку:

@IBAction func openCamera(sender: AnyObject) { ///accion del boton Camara

// Create image picker controller 


    let image = UIImagePickerController() 

    image.delegate = self 

    image.sourceType = UIImagePickerControllerSourceType.Camera 
    image.cameraDevice = UIImagePickerControllerCameraDevice.Front 
    self.presentViewController(image, animated: true, completion: nil) 
} 

Я получил эту ошибку:

Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and [PLUICameraViewController shouldAutorotate] is returning YES' *** First throw call stack: (0x18150ee38 0x180b73f80 0x18150ed80 0x1866d1af0 0x1866db150 0x1866db0c8 0x1866d9bb0 0x186653910 0x1866536ac 0x1866536ac 0x1866536ac 0x186652c40 0x181e40d50 0x186652ac4 0x186660578 0x18675a11c 0x186759a40 0x1869b8740 0x18690afd8 0x186918990 0x18664a4a4 0x1814c47b0 0x1814c2554 0x1814c2984 0x1813ecd10 0x182cd4088 0x1866c1f70 0x1000675ac 0x180f8a8b8) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb)

Когда я использую

> presentViewController(cameraViewController, animated: true, 
> completion: nil) 
>  } 
>  */ 
>  
>   // Create image picker controller 
>   
>   
>   let image = UIImagePickerController() 
>   
>   image.delegate = self 
>   
>   image.sourceType = UIImagePickerControllerSourceType.Camera 
>   image.cameraDevice = UIImagePickerControllerCameraDevice.Front 
>   self.presentViewController(image, animated: true, completion: nil) 
>  } 
+0

принуждая ориентация устройства - это не путь. проблема также не в устройстве, а в ориентации интерфейса, которую вы указали в своем AppDelegate или в вашем приложении. Вы запрещаете портрет? затем разрешите это: P –

+0

, что означает, что ваш viewControllers должен поддерживать его. но он позволит это для VC, которые хотят его –

ответ

0

Для того, чтобы изменить ориентацию программно, использовать это:

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

Я не думаю, что это яблоко одобрено;) ТАКЖЕ ошибка - это ориентация интерфейса. а не сама по себе ориентация устройства –

0

Преодоление ориентации устройства - это не путь. проблема также не в устройстве, а в ориентации интерфейса :) есть разница в том, чтобы читать примерно

, но для решения проблемы просто разрешите портретный режим в приложении и укажите его в приложении AppDelegate или в вашем приложении. :)

//allow rotation for app 
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window { 
    return UIInterfaceOrientationMaskAll; 
} 

... вы можете ТОГДА запретить его для определенных VCs а не для всего ...

//for a vc 
- (UIInterfaceOrientationMask)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskLandscapeLeft; 
} 
- (BOOL)shouldAutorotate { 
    return YES; 
} 
0

Используйте сеттера метод для настройки ориентации

private var orientations = UIInterfaceOrientationMask.landscapeLeft 
    override var supportedInterfaceOrientations : UIInterfaceOrientationMask { 
     get { return self.orientations } 
     set { self.orientations = newValue } 
    } 
Смежные вопросы