添加叠加到自定义UIImagePickerController?

时间:2016-02-23 23:17:24

标签: ios video swift2 uiimagepickercontroller

我已经扩展了UIImagePickerController,但我不确定如何显示自定义叠加层。故事板中显示的那个似乎被忽略了,将它添加为单独的视图似乎也没有帮助。我想知道我是否在生命周期的正确部分执行此操作,或者是否需要设置其他属性?

class VideoRecorderViewController: UIImagePickerController {
    var overlayView : UIView?

    override func viewDidLoad() {
        super.viewDidLoad()

        self.mediaTypes = [kUTTypeMovie as String]
        self.sourceType = .Camera
        self.cameraCaptureMode = .Video

        self.allowsEditing = false
        self.delegate = delegate
        self.showsCameraControls = false
        self.overlayView = (NSBundle.mainBundle().loadNibNamed("RecorderOverlayView", owner: self, options: nil)[0] as! UIView)

        if (self.overlayView != nil) {

            self.overlayView?.frame = self.cameraOverlayView!.frame
            self.cameraOverlayView = self.overlayView;            
        } 
    }    
}

其他有效的例子,UIImagePickerController是从另一个UIView创建的,但我宁愿避免使用其他空UIView来简单地创建UIImagePickerController。

使用Swift 2

1 个答案:

答案 0 :(得分:1)

根据UIImagePickerController Class Reference

  

重要

     

UIImagePickerController类仅支持纵向模式。这个    class旨在按原样使用,不支持子类化。    此类的视图层次结构是私有的,不得修改,    除了一个例外。您可以为自定义视图分配    cameraOverlayView属性并使用该视图来显示其他内容    信息或管理相机界面之间的交互    和你的代码。

您正在尝试子类化UIImagePickerController。您应该使用所需的自定义UI创建视图以进行视频捕获,然后设置UIImagePickerController实例的overlayView实例。该视图可以包含子视图,它们是以UIImagePickerController的presentViewController为目标的控件。

相关问题