2016-10-04 56 views
0

我正在制作一个应用程序,允许用户打开照片库以更改图像视图中的图片。无论何时我将方向锁定到横向模式,为了避免严重的限制,应用程序总是将我喜欢的所有内容都放在屏幕上,照片库会尝试以纵向模式打开。为了解决这个问题我做了一个叫的UIImagePickerController + SupportedOrientations新类,并添加尝试打开照片库时,横向定位锁不起作用Swift

extension UIImagePickerController 
{ 
    public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
     return .Landscape 
    } 
    override public func shouldAutorotate() -> Bool { return false } 
} 

,希望能够阻止这一切。现在,它在横向模式下打开时,我使用的应用程序没有锁定它,但如果我锁定它,我得到以下错误

terminating with uncaught exception of type NSException 
+0

它会导致崩溃吗?或只是在你的调试器警告? –

+0

当我试图打开照片库时,它会导致完全崩溃@AKMSalehSultan – zach2161

+0

好吧给一个小时。让我尽快回复你。 –

回答

-1

它完全支持横向模式。把这个扩展放在某个地方。最好在一个名为的UIImagePickerController + SupportedOrientations.swift

文件

extension UIImagePickerController 
 
{ 
 
    public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
 
     return .Landscape 
 
    } 
 
}

这使得所有UIImagePickerControllers在您的应用程序的风景线。您也可以继承,并重写此方法只作一个子类景观能够:

class LandscapePickerController: UIImagePickerController 
 
{ 
 
    public override func supportedInterfaceOrientations() -> UIInterfaceOrientationMask { 
 
     return .Landscape 
 
    } 
 
}

最后,支持横向模式,您可以返回

return [.Landscape]

+0

-1此解决方案是以下提供的答案的副本:在Swift 2.0中以横向模式使用UIImagePickerController(http://stackoverflow.com/questions/33058691/use-uiimagepickercontroller-in-landscape-mode-in-swift-2 -0) – David