Как добавить любое пользовательское изображение на экране камеры во время захвата изображения?
Я хочу добавить кастом UIImage
на экране камеры, пока пользователь снимает фотографию. Также я хочу, чтобы это изображение было на переднем плане этого захваченного изображения в той же позиции, в которую добавлено изображение.
Здесь демонстрационное изображение, которое объясняет, что я хочу.
Чтобы обойти это у меня есть попытка
let picker = UIImagePickerController()
picker.sourceType = .Camera
picker.view.addSubView(imageView)
Но используя этот код, он будет только добавлять изображение, а не добавлять изображение с захваченным изображением.
Любая помощь приветствуется.
2 ответа
Ты можешь использовать UIImagePickerController
"s cameraOverlayView
свойство добавить imageView
в верхней части экрана камеры:
let picker = UIImagePickerController()
picker.delegate = self
picker.sourceType = .Camera
picker.cameraOverlayView = imageView
presentViewController(picker, animated: true, completion: nil)
Для добавления изображения на передний план захваченного фото вы можете создать расширение для UIImage
:
extension UIImage {
func imageWithOverlayImage(overlayImage: UIImage) -> UIImage {
let imageRect = CGRectMake(0, 0, self.size.width, self.size.height)
UIGraphicsBeginImageContext(self.size)
self.drawInRect(imageRect)
overlayImage.drawInRect(imageRect)
let resultImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return resultImage
}
}
Затем вы можете вызвать его из метода делегата средства выбора изображений:
func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
let image = info[UIImagePickerControllerOriginalImage] as! UIImage
finalImage = image.imageWithOverlayImage(overlayImage!)
dismissViewControllerAnimated(true, completion: nil)
}
Попробуйте поставить Overlayview. добавить пользовательское изображение в оверлей.
func openCamera(){
let pickercontroller : UIImagePickerController = UIImagePickerController()
pickercontroller.delegate = self
if(UIImagePickerController .isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera)){
pickercontroller.sourceType = UIImagePickerControllerSourceType.Camera
}
else{
}
pickercontroller.editing = false
pickercontroller.showsCameraControls = false
let graphRect:CGRect = CGRectMake(0, 0,pickercontroller.view.frame.size.width-20 ,pickercontroller.view.frame.size.height)
let overlayView : UIView = UIView(frame: graphRect)
overlayView.backgroundColor = UIColor(colorLiteralRed: 0.0/255.0, green: 0/255.0, blue: 0.0/255.0, alpha: 0.5)
overlayView.layer.opaque = false
overlayView.opaque = false
var maskLayer : CAShapeLayer = CAShapeLayer()
overlayView.layer.mask = maskLayer
}