Please remember to test the code of this tutorial on a real device, because the iOS Simulator doesn't handle the camera.
I have made a demo project that looks like this:
My sample project has 3 buttons in the main controller:
- Open Camera
- Open Photo Library
Let’s start by adding the two delegates needed to make this tutorial work, you have to place them into your ViewController class:
I have added the image picker and navigation controller delegates to our code, they are included into the UIKit framework so you don’t have to import any extra file into your swift page.
In my sample project we had to create an image view too in order to use it later:
Check out the following code, it's the magic that opens the camera on your device:
What does the code above do? We're going to explain it line by line:
- An IBAction instance for the button, created by ctrl+drag from the Open Camera button to our ViewController.swift page
- Check if the Camera is available on the device (as a source type)
- Here we declare a variable of image picker controller
- Set its delegate
- Set its source type
- Here we tell our image picker to not edit a captured picture, which means that we won’t get the black screen with a square frame right after taking a photo.
- Finally, we present the camera controller, it will show up from the bottom of the screen, which is the default iOS animation for opening new screens.
Run the project, tap the button and you’ll get something like this:
Now, let's see how to make Open Photo Library button work:
- An action for the button, created the same way we did for the previous object
- Check if the device is able to access a photo library
- Declare another image picker's variable for later use
- Set its delegate
- Set its source type (the camera roll)
- This time we set the property that allows us to edit our picked image as true, which means that we will get a black window with a square frame where we can zoom, move and crop our photo.
- Finally, we present the photo library controller with a standard animation from the bottom of the screen
Run the project and tap the button, you will get the following results:
We now need to add a delegate to our class, in order to tell our app to get the chosen image and place it into the image view we've placed on the main screen. Please note that the following delegate will be used for both the functions of this template:
- Our instance of the delegate. One great thing about XCode is that you can start typing "image" and a list of available delegates will show up below the cursor, it helps you pick up the one you need.
- Here we set its object as the chosen image from the library or camera.
- Here we dismiss the controller and get back to our main screen.
We are only missing the Save button method to complete this tutorial:
Line by line:
- IBAction of the button
- Here we declare a variable of NSData for our image and compress it to 0.6 quality (you can set this value from 0.0 to 1.0)
- Create a new UIImage and pass it the data previously made into it
- Simple method to save our picture into camera roll
- Here we create an alert and give it a title
- a message
- no delegate in this case
- and a cancel button's title
- Tell our UIAlertView to show up
We’re done, you can run the project and play with buttons, after dismissing the image picker controller you will see your chosen image and save it into photo library:
This article is accurate and true to the best of the author’s knowledge. Content is for informational or entertainment purposes only and does not substitute for personal counsel or professional advice in business, financial, legal, or technical matters.
© 2015 cubycode