Picking Images Made Easy with UIImagePickerController in Swift

Effortless Image Handling for Your iOS App Development

Vikram Kumar
4 min readNov 4, 2023

Introduction

In today’s mobile app ecosystem, the ability to select and work with images is essential. Whether you’re building a social media platform, an e-commerce app, or any application that involves images, knowing how to use the UIImagePickerController in Swift can be a valuable skill. In this blog post, we’ll explore the UIImagePickerController in Swift, providing you with a step-by-step guide and practical examples on how to effortlessly pick images within your iOS application.

Photo by toine G on Unsplash

What is UIImagePickerController?

The UIImagePickerController is a built-in class in Swift and Objective-C that simplifies the process of picking images from the device’s photo library or capturing new photos using the camera. It provides a user-friendly interface and handles many of the complexities involved in working with images on iOS.

Why Use UIImagePickerController?

The UIImagePickerController is an excellent choice for picking images in your app for several reasons:

  1. User-Friendly Interface: It offers a user-friendly and familiar interface, making it easy for users to select or capture images.
  2. Seamless Integration: The UIImagePickerController seamlessly integrates with the device’s camera and photo library, providing a unified experience.
  3. Access to Photo Library: Users can choose images from their entire photo library, ensuring they have a wide selection of pictures to work with.
  4. Efficiency: UIImagePickerController takes care of many tasks like permissions, image retrieval, and handling various image formats, saving you time and effort in development.

How to Use UIImagePickerController in Swift: A Step-by-Step Guide

Let’s dive into a step-by-step guide on how to use the UIImagePickerController in Swift. We’ll illustrate the process with a simple example.

Step 1: Create a UIImagePickerController Instance

First, you need to create an instance of UIImagePickerController in your Swift code. You can do this by instantiating the UIImagePickerController class:

let imagePicker = UIImagePickerController()

Step 2: Set the Delegate

The UIImagePickerController requires a delegate to handle image selection or capture. Typically, your view controller should conform to the UIImagePickerControllerDelegate and UINavigationControllerDelegate protocols.

class YourViewController: UIViewController {

// Your storyboard imageView outlet
@IBOutlet weak var imgView: UIImageView!

override func viewDidLoad() {
super.viewDidLoad()

}

// Your code here
}

// MARK: ImagePicker Delegate
extension YourViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {

// Step 4: Implement delegates
}

Step 3: Present the UIImagePickerController

To display the UIImagePickerController, you need to present it in your view controller. You can do this by calling present(_:animated:completion:):

@IBAction func openImagePicker(_ sender: UIButton) {
presentImagePicker()
}


private func presentImagePicker() {
imagePicker.delegate = self
imagePicker.sourceType = .photoLibrary // Or .camera for capturing photos
present(imagePicker, animated: true, completion: nil)
}

Step 4: Handle Image Selection or Capture

Implement the necessary delegate methods to handle the selected or captured images:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let pickedImage = info[.originalImage] as? UIImage {
// You now have the selected or captured image (pickedImage).
// You can use it as needed within your app.
imgView.image = pickedImage
}
dismiss(animated: true, completion: nil)
}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
// Handle the user canceling the image picker, if needed.
dismiss(animated: true, completion: nil)
}

Bonus: Helper Class

To further enhance code reusability and maintain a clean codebase, we can introduce an ImagePicker class. This class will encapsulate the logic for image-related tasks, making it easy to manage image handling across your application.

Here’s an example of how to use the ImagePicker class to implement image selection and capture in a typical view controller:

In this example, a view controller (ImagePickerExampleViewController) adopts the ImagePickerDelegate protocol. It sets up the ImagePicker object, assigns itself as the delegate, and implements the delegate methods.

When the “openImagePickerButton” is tapped, the showImagePicker method is called, which displays an alert allowing the user to choose between capturing an image with the camera or selecting from the photo library.

The delegate methods are then called, providing feedback on whether the selected image, or if the selection was canceled.

This example demonstrates how to use the ImagePicker class in your view controller for image selection and capture with the appropriate delegate methods for handling the results.

Conclusion

The UIImagePickerController in Swift simplifies the process of image selection and capture within your iOS application. With its user-friendly interface, it provides a seamless experience for your users, allowing them to choose or capture images with ease.

Whether you’re building a social media app, an e-commerce platform, or any application that involves images, understanding how to use UIImagePickerController is a valuable skill. By following the step-by-step article provided in this post, you can effortlessly integrate image picking and capture functionality into your app, enhancing user engagement and satisfaction.

So, the next time you need to implement image selection in your iOS app, you can confidently use UIImagePickerController to get the job done.

Happy coding!

--

--

Vikram Kumar
Vikram Kumar

Written by Vikram Kumar

I am Vikram, a Senior iOS Developer at Matellio Inc. focused on writing clean and efficient code. Complex problem-solver with an analytical and driven mindset.

Responses (1)