我正在为艺术装置创建一个应用程序,它将模仿Apple自己的相机应用程序,但稍作修改(轻微的视频显示参数,仅限前置摄像头等)。一切都在工作,但是我将相机连接到外接显示器,因此需要它以横向模式显示,而不是纵向模式。我通过Lightning将它连接到HDMI。
我使用的是UIImagePickerController而不是AVFoundation,因为默认情况下它会进行面部检测,这与Apple自己的面部检测相同(面部周围的黄色方块)。我觉得复制AV基础中的人脸检测会带来很大的麻烦。但是,UIImagePickerController只是拒绝以横向模式显示。这是关于它的参考信息:
UIImagePickerController类仅支持纵向模式。此类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改,但有一个例外。您可以将自定义视图分配给cameraOverlayView属性,并使用该视图显示其他信息或管理相机界面与代码之间的交互。
来自:https://developer.apple.com/reference/uikit/uiimagepickercontroller
我还想做什么?我已经在使用cameraOverlayView,但到目前为止还没有解决问题?我可以改变HDMI显示器的内容吗?由于我不会将此应用程序提交给Apple,因此我不需要遵循他们的标准,只要我可以在运行10.1.1的自己的iPhone 7 Plus上安装它。
这是我当前的代码,以防它有用:
let imagePicker = UIImagePickerController()
let myView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 200))
myView.backgroundColor = UIColor(colorLiteralRed: 0.5, green: 1.0, blue: 0.2, alpha: 1)
myView.alpha = 0.1
imagePicker.delegate = self
imagePicker.sourceType =
UIImagePickerControllerSourceType.camera
imagePicker.cameraDevice = UIImagePickerControllerCameraDevice.front
imagePicker.mediaTypes = [kUTTypeImage as String]
imagePicker.allowsEditing = false
imagePicker.videoQuality = UIImagePickerControllerQualityType.type640x480
//imagePicker.showsCameraControls = false
imagePicker.cameraOverlayView = myView
imagePicker.modalPresentationStyle = UIModalPresentationStyle.currentContext
self.present(imagePicker, animated: true,
completion: nil)