Bird
Raised Fist0
iOS Swiftmobile~5 mins

Camera and photo library in iOS Swift - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of UIImagePickerController in iOS development?
UIImagePickerController is a built-in class that lets users pick images or videos from their photo library or take new photos or videos using the camera.
Click to reveal answer
beginner
Which privacy key must be added to Info.plist to access the camera?
You must add the key NSCameraUsageDescription with a message explaining why your app needs camera access.
Click to reveal answer
beginner
How do you check if the camera is available on an iOS device?
Use UIImagePickerController.isSourceTypeAvailable(.camera) to check if the device has a camera before trying to use it.
Click to reveal answer
intermediate
What delegate protocol must your class conform to when using UIImagePickerController?
Your class must conform to <strong>UIImagePickerControllerDelegate</strong> and <strong>UINavigationControllerDelegate</strong> to handle image picking results and navigation events.
Click to reveal answer
beginner
Why is it important to dismiss UIImagePickerController after picking an image?
Dismissing UIImagePickerController returns control to your app's interface and prevents the picker from blocking user interaction.
Click to reveal answer
Which source type allows users to select photos from their library?
A.camera
B.photoLibrary
C.savedPhotosAlbum
D.video
What must you do before accessing the camera in your app?
AEnable background modes
BRequest microphone permission
CAdd NSCameraUsageDescription in Info.plist
DNothing special is needed
Which delegate method handles the event when a user finishes picking an image?
AimagePickerController(_:didFinishPickingMediaWithInfo:)
BimagePickerControllerDidCancel(_:)
CviewDidLoad()
DapplicationDidBecomeActive()
How do you check if the device supports taking photos?
AUIImagePickerController.isSourceTypeAvailable(.camera)
BUIDevice.current.hasCamera
CAVCaptureDevice.isAvailable()
DNo check is needed
What happens if you don't dismiss UIImagePickerController after use?
AThe app automatically dismisses it
BThe app crashes
CNothing happens
DThe picker stays on screen and blocks interaction
Explain the steps to let a user take a photo and use it in your app.
Think about permissions, presenting the camera, and handling the result.
You got /5 concepts.
    Describe how to allow users to pick an existing photo from their library.
    Focus on the photo library source and delegate handling.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the purpose of setting sourceType to .camera in UIImagePickerController?
      easy
      A. To select an existing photo from the photo library
      B. To record a video using the device camera
      C. To allow the user to take a new photo using the device camera
      D. To open the device settings

      Solution

      1. Step 1: Understand sourceType usage

        The sourceType property of UIImagePickerController defines where the image will come from.
      2. Step 2: Identify the effect of .camera

        Setting sourceType to .camera opens the device camera to take a new photo.
      3. Final Answer:

        To allow the user to take a new photo using the device camera -> Option C
      4. Quick Check:

        sourceType = .camera means take new photo [OK]
      Hint: Camera sourceType means take a new photo [OK]
      Common Mistakes:
      • Confusing .camera with .photoLibrary
      • Thinking .camera records video by default
      • Assuming .camera opens settings
      2. Which of the following is the correct way to declare a UIImagePickerController and set its delegate in Swift?
      easy
      A. var picker = UIImagePickerController() picker.delegate = self()
      B. let picker = UIImagePickerController() picker.delegate = self
      C. let picker = UIImagePickerController picker.delegate = self()
      D. var picker = UIImagePickerController picker.delegate = self

      Solution

      1. Step 1: Correct initialization syntax

        In Swift, UIImagePickerController() requires parentheses to create an instance.
      2. Step 2: Assign delegate properly

        The delegate is assigned as self without parentheses because it is a property, not a function call.
      3. Final Answer:

        let picker = UIImagePickerController() picker.delegate = self -> Option B
      4. Quick Check:

        Initialize with () and assign delegate without () [OK]
      Hint: Use parentheses for init, no parentheses for delegate [OK]
      Common Mistakes:
      • Forgetting parentheses when creating UIImagePickerController
      • Using parentheses when assigning delegate
      • Declaring picker without parentheses
      3. Given the following code snippet, what will be printed when a user selects a photo from the library?
      func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
          if let image = info[.originalImage] as? UIImage {
              print("Image selected")
          } else {
              print("No image found")
          }
      }
      medium
      A. Nothing is printed
      B. No image found
      C. Compilation error
      D. Image selected

      Solution

      1. Step 1: Check the delegate method behavior

        The method imagePickerController(_:didFinishPickingMediaWithInfo:) is called after user picks a photo.
      2. Step 2: Understand the info dictionary

        The info dictionary contains the key .originalImage with the selected UIImage if successful.
      3. Final Answer:

        Image selected -> Option D
      4. Quick Check:

        Image exists in info dictionary after selection [OK]
      Hint: If image exists in info, print "Image selected" [OK]
      Common Mistakes:
      • Assuming image is nil after selection
      • Confusing delegate method names
      • Not casting info dictionary value properly
      4. What is the error in the following Swift code that prevents the image picker from working correctly?
      let picker = UIImagePickerController()
      picker.sourceType = .camera
      picker.delegate = self
      present(picker, animated: true)
      medium
      A. Missing UIImagePickerControllerDelegate and UINavigationControllerDelegate conformance
      B. Incorrect sourceType value
      C. Delegate should be assigned after presenting picker
      D. Cannot present picker without a navigation controller

      Solution

      1. Step 1: Check delegate conformance requirements

        To use UIImagePickerController delegate methods, the class must conform to UIImagePickerControllerDelegate and UINavigationControllerDelegate.
      2. Step 2: Identify missing conformance

        If the class does not conform, delegate methods won't be called and picker won't work properly.
      3. Final Answer:

        Missing UIImagePickerControllerDelegate and UINavigationControllerDelegate conformance -> Option A
      4. Quick Check:

        Delegate protocols must be adopted for picker to work [OK]
      Hint: Always conform to both delegate protocols [OK]
      Common Mistakes:
      • Forgetting to add delegate protocols to class
      • Assigning delegate after presenting picker
      • Using wrong sourceType value
      5. You want to allow users to either take a new photo or pick one from their library. Which approach correctly handles both options in Swift?
      hard
      A. Set sourceType dynamically based on user choice, then present a single UIImagePickerController
      B. Use sourceType = .savedPhotosAlbum to cover both camera and library
      C. Create two UIImagePickerController instances, one with .camera and one with .photoLibrary, and present both simultaneously
      D. Use UIImagePickerController only for camera and a custom UI for photo library

      Solution

      1. Step 1: Understand sourceType flexibility

        A single UIImagePickerController can have its sourceType set to either .camera or .photoLibrary before presenting.
      2. Step 2: Handle user choice before presenting picker

        Based on user selection, set the sourceType dynamically and present the picker once.
      3. Final Answer:

        Set sourceType dynamically based on user choice, then present a single UIImagePickerController -> Option A
      4. Quick Check:

        One picker, sourceType changes per user choice [OK]
      Hint: Use one picker, change sourceType before presenting [OK]
      Common Mistakes:
      • Trying to present two pickers at once
      • Using savedPhotosAlbum to cover camera
      • Mixing custom UI unnecessarily
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard