仅在 Swift 中以横向模式打开相机和库

Posted

技术标签:

【中文标题】仅在 Swift 中以横向模式打开相机和库【英文标题】:Open camera and library only in landscape mode in Swift 【发布时间】:2016-03-22 11:33:09 【问题描述】:

我想以横向模式打开相机和库,但我无法做到。

请有人可以解释并给我一个例子。

我使用了下面的代码,但似乎缺少一些代码(例如:导入库),我需要一个完整的示例,如何实现,打开库和相机并保存在相机胶卷中的功能。

 override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) 
        super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
        if let connection =  self.previewLayer?.connection  
            var currentDevice: UIDevice = UIDevice.currentDevice()
            var orientation: UIDeviceOrientation = currentDevice.orientation

        var previewLayerConnection : AVCaptureConnection = connection

        if (previewLayerConnection.supportsVideoOrientation)
        
            switch (orientation)
            
            case .Portrait:
                previewLayerConnection.videoOrientation = AVCaptureVideoOrientation.Portrait
                break
            case .LandscapeRight:
                previewLayerConnection.videoOrientation = AVCaptureVideoOrientation.LandscapeLeft
                break
            case .LandscapeLeft:
                previewLayerConnection.videoOrientation = AVCaptureVideoOrientation.LandscapeRight
                break
            case .PortraitUpsideDown:
                previewLayerConnection.videoOrientation = AVCaptureVideoOrientation.PortraitUpsideDown
                break


            default:
                previewLayerConnection.videoOrientation = AVCaptureVideoOrientation.Portrait
                break
            
                        
    

还表明我已经实现了一些代码 我发现在不使用 AVFoundation 等额外库的情况下更容易实现。

我目前正在使用此代码来打开库和相机。

  @IBAction func openLibrary(sender: AnyObject)         ///accion del boton Library

    imagePicker.allowsEditing = false
    imagePicker.sourceType = .PhotoLibrary

    presentViewController(imagePicker, animated:true, completion: nil)



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



    imagePicker.allowsEditing = false
    imagePicker.sourceType = .Camera



    presentViewController(imagePicker, animated:true, completion: nil)


【问题讨论】:

对不起,我一次又一次地有同样的疑问......我有点绝望,因为我找不到解决方案。 好的,谢谢,我会编辑我的问题。 【参考方案1】:

在您的应用程序委托中使用此功能:

func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int 
    if let presentedView = self.window?.rootViewController?.presentedViewController as? CameraViewController 
   //cameraView
        return Int(UIInterfaceOrientationMask.Landscape.rawValue)
        
     else 
        //other view
    

斯威夫特 2

func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> UIInterfaceOrientationMask 
    if let presentedView = self.window?.rootViewController?.presentedViewController as? YourCameraViewController 
        //cameraView
        return UIInterfaceOrientationMask.Landscape
     else 
//other view
// return here ur orientation for other view

【讨论】:

我正在使用 lenguaje Swift,我收到错误消息:Objective-C 方法 'application:supportedInterfaceOrientationsForWindow:' 提供​​的方法 'application(:supportedInterfaceOrientationsForWindow:)' 与可选要求方法 'application (:supportedInterfaceOrientationsForWindow:)' 在协议 'UIApplicationDelegate' dropbox.com/s/dulthl1qy61prax/… 只需从 intelisens 旧参数中调用它,旧版本 swift 中的旧参数可能不同,如强或弱,或者此函数可以返回不同的类型,如 swift 2.0 中的 UIInterfaceMask 来自 intelisens?我不明白该怎么做。 代码似乎是客观的 C,我使用的是 Swift,xcode 7.2 谢谢,现在我得到了错误:dropbox.com/s/ozw1yyo4pikzotx/…

以上是关于仅在 Swift 中以横向模式打开相机和库的主要内容,如果未能解决你的问题,请参考以下文章

从纵向活动中以横向打开相机时上下文为空

相机仅在人像模式下快速拍照

Swift Camera App - 左右启用横向模式

最初在 ios sdk 中以横向模式打开视图控制器

以纵向模式从相机拍摄的加载到画布上的照片是横向的

在 iPhone 的 iOS 7 中打开相机时横向模式下的方向问题