While the iPhone 6 and 6 Plus brought new camera hardware upgrades, Apple also improved photography in a few ways with iOS8, so users of older phones won’t be missing out entirely. These updates involved changes to Manual Camera controls and Photokit and affects both when a picture is being taken and what can be done to a picture that has been saved. As a developer, these new features allow you to tap into the the camera like never before to create some great experiences for your users. I’ll take you through what you need to know about these updates below.
Avid photographers are used to being able to have a lot of control. Until now, that wasn’t really possible with the iPhone camera. Now, Apple is allowing developers to directly control the camera while a user is taking a picture. The lens size itself still can’t fully be controlled, but if you’re making a camera app, there are few other things you can do with the shutter speed and ISO.
Bracket capture used to be available in just the Native Camera app via Burst mode, but now it exists for others to use as well. While Burst holds the same settings, Auto Exposure can be used with different settings, while Manual Exposure can handle either different shutter speeds or ISO values.
Manual focus allows full manual control of lens position when locking focus, whereas Manual Exposure manipulates the brightness of an image relative to the source brightness.
You can see that each app took a different approach to making use of the controls. While there are no strict guidelines for the UI, remember that you don’t have to make use of everything available. Just use what makes sense for what your app needs to do.
PhotoKit is actually made up of two frameworks that help your app accomplish more when working with a picture or video that has already been captured and saved:
1) Photos Framework — This lets your app access photo and video assets and albums moments (including iCloud Photo Library). You can add, remove and modify assets, as well as edit photo/video content and metadata.
2) PhotosUI Framework — A.K.A. Photo Editing Extension – Allows third-party app editing tools to make use of functionality from built-in Photos and Camera apps.
The Photos Framework is currently used by the built-in Photos and Camera app. It replaces the ALAssetsLibrary framework and provides more features and better performance when working with a user’s photo library. This change allows an app to edit directly in the camera roll without importing an image, which offers greater flexibility for incorporating photo-library data into applications. However, the Photos Framework only provides limited access to metadata properties, potentially due to iCloud PhotoLibrary (some images are not on the device).
Before using the Photos Framework, consider if your app needs to do so. Would your app otherwise import a photo to manipulate? Especially if you have an old app that did this, now it would be easier to query assets, since your app would no be longer dependent on saving Camera Roll and having the user select to access the photo asset.
(Don’t know/remember what an Extension is? Check out David Linke’s post, all about extensions!)
If you want to extend your app’s brand and not have a user worry about opening your app just to edit a photo, you may want to build an extension. This allows for the embedding of your photo-editing app’s tools directly into the Photos app, reducing the steps of a user having to get to your app first if they’re already in Photos.
iOS keeps multiple versions of an asset – the original, current, and adjustments data (used to create current). Note that current is not available for videos. Ideally, any extension can use original with adjustments (which allows reverting back old changes) or current (no reverting allowed) for photos.
The Photo Editing extension is intended to make it easy for users to make quick, targeted adjustments. The UI is pretty simple; the user can add any editing extension right from the Photos app. The user accesses the “…” button to either see extensions that have already been turned on, or they can go one step further to turn on an available extension.
In terms of guidelines and best practices, if you’re thinking of using this extension for you app, make sure your usage makes sense and does not require too much user interaction. This extension is not about sharing photos, but making quick changes with your editing tools. As mentioned before, you should probably support adjustment data to allow reverting past edits.
Apple can be particular, and in this case, says to avoid designing a navigation-bar-based UI and to use Auto Layout to design the view, including the top layout guide to avoid being underneath the bar. Also, a best practice is to allow users to preview and don’t let user lose work when accidentally choosing cancel. In addition, keep in mind that since a user could be manipulating a large, high-res image for a long period of time, ensure that your extension runs your existing image-processing code at a high standard to avoid memory constraints.
And lastly, Apple only will surface one Photo Editing extension for each media type (photo, video) in a containing app, so if you try to make more available, the user will never even see it.
Interested in applying to Applico? Check out our job openings here!
Filed under: Product Engineering | Topics: iOS, IOS 8, ios developer, ios development, Photography, PhotoKit