6.6. Using Camera: UIImagePickerController
//
// AddExpenseViewController.swift
// App6
//
// Created by Sakib Miazi on 5/18/23.
//
//codes omitted...
class AddExpenseViewController: UIViewController {
//codes omitted...
//MARK: variable to store the picked Image...
var pickedImage:UIImage?
//Codes omitted...
override func viewDidLoad() {
super.viewDidLoad()
//codes omitted...
//MARK: adding menu to buttonTakePhoto...
addExpenseScreen.buttonTakePhoto.menu = getMenuImagePicker()
//codes omitted...
}
//codes omitted...
func getMenuImagePicker() -> UIMenu{
var menuItems = [
UIAction(title: "Camera",handler: {(_) in
self.pickUsingCamera()
}),
UIAction(title: "Gallery",handler: {(_) in
self.pickPhotoFromGallery()
})
]
return UIMenu(title: "Select source", children: menuItems)
}
//codes omitted...
//MARK: take Photo using Camera...
func pickUsingCamera(){
let cameraController = UIImagePickerController()
cameraController.sourceType = .camera
cameraController.allowsEditing = true
cameraController.delegate = self
present(cameraController, animated: true)
}
//codes omitted...
}
//codes omitted...
//MARK: adopting required protocols for UIImagePicker...
extension AddExpenseViewController: UINavigationControllerDelegate, UIImagePickerControllerDelegate{
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
picker.dismiss(animated: true)
if let image = info[.editedImage] as? UIImage{
self.addExpenseScreen.buttonTakePhoto.setImage(
image.withRenderingMode(.alwaysOriginal),
for: .normal
)
self.pickedImage = image
}else{
// Do your thing for No image loaded...
}
}
}Inside pickUsingCamera() method:
Changing the privacy settings of the App to allow the app to access the Camera

Last updated