我已经扩展了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
答案 0 :(得分:1)
根据UIImagePickerController Class Reference:
重要
UIImagePickerController类仅支持纵向模式。这个 class旨在按原样使用,不支持子类化。 此类的视图层次结构是私有的,不得修改, 除了一个例外。您可以为自定义视图分配 cameraOverlayView属性并使用该视图来显示其他内容 信息或管理相机界面之间的交互 和你的代码。
您正在尝试子类化UIImagePickerController。您应该使用所需的自定义UI创建视图以进行视频捕获,然后设置UIImagePickerController实例的overlayView实例。该视图可以包含子视图,它们是以UIImagePickerController的presentViewController为目标的控件。