很抱歉,如果这个问题有点广泛,但我一直在寻找几个小时,没有一个适合我这个问题的特定需求的出色解决方案。
对于某些背景信息,我正在处理的iOS应用程序需要相机覆盖(一个掩码图像的png),用户可以将其面部放入并捕获照片,并将遮罩覆盖在顶部它的。相机最初设置在前面,因为主要目的是具有某种自拍功能。点击默认捕获按钮后,相机预览图像将被镜像或反转。
在将照片捕捉到相机预览视图之前,一切看起来都很棒;然而,在捕获之后,它会被镜像或反转。例如,如果我在设置捕捉图片的同时握住我的左手,并且我捕获了该图像,则相机预览看起来就像是在握住我的右手。
在我的研究过程中,我发现了一些不完全符合我需求的解决方案,或者完全解释了我如何解决问题。我的项目完全是用Swift编写的,如果可能的话,管理层希望不惜一切代价保持这种方式。下面,我将列出我找到的解决方案:
这是我到目前为止与UIImagePickerController一起使用的唯一代码:
var picker = UIImagePickerController()
@IBAction func shootPhoto(_ sender: AnyObject) {
if UIImagePickerController.availableCaptureModes(for: .front) != nil {
picker = UIImagePickerController() //make a clean controller
picker.allowsEditing = false
picker.sourceType = UIImagePickerControllerSourceType.camera
picker.cameraCaptureMode = .photo
picker.cameraDevice = .front
picker.showsCameraControls = true
//customView stuff
let customViewController = CustomOverlayViewController(
nibName:"CustomOverlayViewController",
bundle: nil)
let customView:CustomOverlayView = customViewController.view as! CustomOverlayView
customView.frame = self.picker.view.frame
picker.modalPresentationStyle = .fullScreen
present(picker,animated: true,completion: {
self.picker.cameraOverlayView = customView
})
} else { //no camera found -- alert the user.
let alertVC = UIAlertController(
title: "No Camera",
message: "Sorry, this device has no camera",
preferredStyle: .alert)
let okAction = UIAlertAction(
title: "OK",
style:.default,
handler: nil)
alertVC.addAction(okAction)
present(alertVC, animated: true, completion: nil)
}
}
所以,如果有人可以提供一个完整的解决方案或以某种方式指导我(虽然,我认为我已经在互联网上看到了所有内容),那真是棒极了!