My app has a camera section. It takes a photo and then puts a watermark on the photo. However when the photo is saved. The whole screen is saved, not just the UIImageView. I just want the UIImageView to be saved. Its not that but because the menu bar at the button is not that big. I just think it would look better without the menu bar in the picture.
Photo of app just before taking photo.
Photo of how the picture taken is saved.
This is my code below.
import UIKit
class Camera: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UITextFieldDelegate {
@IBOutlet weak var cameraScreen: UIImageView!
var screenView: UIImageView!
@IBAction func Camera(_ sender: AnyObject) {
if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera){
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.camera;
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)}}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject: AnyObject]!){
cameraScreen.image = image
self.dismiss(animated: true, completion: nil);
screenView = UIImageView()
screenView.frame = CGRect(x:0, y: 0, width: self.view.frame.width, height: self.view.frame.height)
let text = "Java"
let label = UILabel(frame: CGRect(x: 125, y: 400, width: self.view.frame.width, height: 300))
label.font = UIFont(name: label.font.fontName, size: 200)
label.textColor = UIColor.blue
label.alpha = 0.3
label.text = text
self.view.addSubview(screenView)
self.view.addSubview(label)
// i tried self, nil, nil
UIGraphicsBeginImageContext(self.view.frame.size)
self.view.drawHierarchy(in: self.view.bounds, afterScreenUpdates: true)
let photo = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
UIImageWriteToSavedPhotosAlbum(photo!, nil, nil, nil)
}
@IBAction func Save(_ sender: AnyObject) {
let alert = UIAlertController(title: "Image Saved", message: "", preferredStyle: .alert)
let okay = UIAlertAction(title: "OK.", style: .default, handler: nil)
alert.addAction(okay)
present(alert, animated: true, completion: nil)
}
}