Additional iOS 10 Frameworks Changes
This article covers additional, minor changes or enhancements to existing frameworks for iOS 10.
AV Foundation Framework Additions
The AVFoundation framework includes the following enhancements:
- In iOS 10, the developer no longer has to implement different AVPlayerItem behaviors based on content type. Simply set the
Rate
property and AVFoundation will determine when enough content is available for playback without stalling. - The new AVCapturePhotoOutput class replaces the deprecated
AVCaptureStillImageOutput
class and provides a unified method for handling all photography workflows by providing sophisticated control and monitoring of the capture process and support for new features such as Live Photos and the RAW capture format. - The new
AVPlayerLooper
class makes it easier to loop a given piece of media during playback. - The
AVAssetDownloadURLSession
class allows for the downloading and later playback of FairPlay encrypted HLS streams. - By default, the AVCaptureSession class automatically supports wide-color, wide-gamut capture when the device hardware supports it. See Apple's iOS Device Compatibility Reference for more details.
AVKit Additions
The AVKit framework now includes the new UpdatesNowPlayingInfoCenter
property to indicate when the Now Playing Info Center should be updated.
Core Data Enhancements
iOS 10 includes the following enhancements to the Core Data framework:
- The NSManagedObjectContext objects with SQLite data stores in the WAL Journal Mode support the new query generation feature where Managed Object Contexts (MOC) can be pinned to specific database versions for future fetching and faulting transactions.
- Root NSManagedObjectContext objects supports concurrent faulting and fetching without serialization.
- The NSPersistentStoreCoordinator class maintains a pool of SQLite data stores.
- Several new convenience methods have been added to
NSManagedObject
making it easier to perform fetches and create subclasses. - Using the high-level
NSPersistenceContainer
to reference theNSPersistentStoreCoordinator
, NSManagedObjectModel and other Core Data configuration resources.
For more information, please see Apple's Core Data Framework Reference.
Core Image Enhancements
iOS 10 makes the following enhancements to the Core Image framework:
- The developer can now process images in a color space outside of the Core Image context's working color space by converting in and out of the color space before and after processing.
- For iOS devices that use the A8 or A9 CPUs, the RAW image format is now supported. Core Image now provides support for decoding RAW images from either the built-in iSight camera or from a 3rd party camera. Use the
FilterWithImageData
orFilterWithImageURL
methods of the CIFilter class to process RAW images. - Several rendering performance enhancements have been made to
UIImage
rendering (when backed by Core Image image stores) inUIImageView
objects. UIImage
objects tagged wide-gamut will render as wide-gamut color inUIImageView
objects on iOS devices that support wide color.- Core Image kernel code can now request specific pixel output formats.
- The
ImageWithExtent
method of the CIFilter class can be used to insert custom processing into the filter operation. Core Image will invoke the given callback between filters when processing an image for output or display.
Additionally, the following new Core Image filters have been added:
CINinePartTiled
CINinePartStretched
CIHueSaturationValueGradient
CIEdgePreserveUpsampleFilter
CIClamp
Core Motion Additions
New to iOS 10, the Core Motion framework includes pedometer events which enable an app to receive fast, real-time notifications of the user pausing and resuming tracking while running. Use the CMPedometer to register for foreground or background pedometer events.
Foundation Enhancements
The following enhancements have been made to the Foundation framework for iOS 10:
Use the new NSMeasurementFormatter class to format localized measurements for displaying to the end user.
Use the new NSDateInterval class to make date and time interval calculations such as durations, for comparing intervals and testing for interval intersections.
Use the new NSMeasurement class to convert between different Units of Measure (UOM) or perform calculations on values in different UOMs.
Use the new NSUnit and NSDimension classes for representing specific UOMs.
Several new properties have been added to the NSLocal class to acquire local information and the available display formats.
GameKit Enhancements
The following enhancements have been made to the GameKit framework in iOS 10:
- The Game Center App has been deprecated and removed from iOS. If the app uses GameKit, it must present its own interface to display GameKit features such as leaderboards, etc.
- A new iCloud-only account type has been implemented by the GKCloudPlayer class.
- The new GKGameSession class provides a generalized solution for managing persistent data storage on Game Center.
GKGameSession
maintains a list of players and the app is responsible for implementing how and when participant date is stored, retrieved or exchanged between players. In many instances Game Sessions can replace existing turn-based matches, real-time matches or persistent game save methods.
GameplayKit Enhancements
The following enhancements have been made to the GameplayKit framework in iOS 10:
- Use the new GKMeshGraph class to provide high-performance, natural-looking paths.
- Procedural noise generation has been added and can be used to enhance the realism in natural-looking textures, add realism to camera movements and help generate rich game worlds.
- Use Spatial Partitioning to partition the game world data for efficient searching.
- A new Monte Carlo strategist (GKMonteCarloStrategist) has been added for exhaustive possible move computation.
- 3D support has been added to existing agent and path-finding behaviors using the new GKAgent3D and GKGraphNode3D classes.
- The new GKScene and GKSKNodeComponent classes make combining GameplayKit and SpriteKit easier than ever.
- A new Decision Tree API has been added (GKDecisionTree and GKDecisionNode) to enhance the game-building AI.
HealthKit Enhancements
The following enhancements have been made to the HealthKit framework in iOS 10:
- New metadata keys have been added for weather types (such as
HKWeatherConditionClear
andHKWeatherConditionCloudy
) and workout types (such asHKWorkoutActivityTypeFlexibility
andHKWorkoutActivityTypeWheelchairRunPace
) have been added. - The new
HKCDADocument
class has been added to represent a Clinical Document Architecture (CDA) formatted document. - Use the new HKWorkoutConfiguration class to specify the
ActivityType
andLocationType
of a workout. - The new HKWheelchairUseObject and the
WheelchairUse
method of the HKHealthStore class have been added for working with wheelchair related health data.
HomeKit Enhancements
The following enhancements have been made to the HomeKit framework in iOS 10:
- New services and characteristics have been added.
- An iPad can be configured to act as a HomeKit Hub to provide remote accessory access, run automation triggers and enable shared user permissions.
- Support has been added for camera and doorbell accessories.
- More context and configurations have been provided for accessories.
Please see our Introduction to HomeKit documentation for more information.
Metal Enhancements
The following enhancements have been made to the Metal framework in iOS 10:
- 3D apps and games can now use Tessellation to efficiently render complex scenes and geometry via the GPU.
- Provide fine-grained control of resource allocation to optimize performance of Metal based apps using Resource Heaps and Memoryless Render Targets.
- Use Function Specialization to create a highly-optimized collection of material and light combination functions for a scene.
To learn more, please see Apple's Metal Programming Guide.
ModelIO Enhancements
The following enhancements have been made to the ModelIO framework in iOS 10:
- The USD file format is now supported.
- Signed Distance Field support has been added to the MDLVoxelArray class.
- Use the new
MDLLightProbeIrradianceDataSource
class to assist in Light Probe placement. - Use the new
MDLMaterialPropertyGraph
class to easily support runtime changes to models.
Photos Enhancements
The following enhancements have been made to the Photos framework in iOS 10:
- Use the CIImageProcessorInput and CIImageProcessorOutput classes to take advantage of the new Core Image processor feature to perform edits.
- Live Photo editing is now available for apps that support the Photos framework and to photo editing extensions (for use inside of the Photos and Camera apps).
- Use the new PHLivePhotoEditingContext class to apply edits to both the video and still content of Live Photos.
ReplayKit Enhancements
The following enhancements have been made to the ReplayKit framework in iOS 10:
- Use the RPScreenRecorder, RPBroadcastActivityViewController and RPBroadcastController classes to support broadcasting of recorded media through 3rd party sites.
- The Broadcast UI and Broadcast Upload extensions are required to support ReplayKit 3rd party broadcast services in the app.
SceneKit Enhancements
The following enhancements have been made to the SceneKit framework in iOS 10:
- The SCNCamera class can provide greater realism by using HDR features and effects. Use adaptive exposure to create automatic effects or use vignetting, color fringing and color grading to add fillmatic effects to the game.
- SceneKit now includes a new Physically Based Rendering (PBR) system for more realistic results with simpler asset authoring.
- Use the new SCNLightingModelPhysicallyBased shading model to product a wide range of realistic shading effects while requiring only three fundamental properties (
Diffuse
,Metalness
andRoughness
). - Since PBR shading works best with environment-based lighting, use the
LightingEnvironment
property to assign image-based lighting to an entire scene. - Use the
IESProfileURL
property to import real-world light fixtures that define lighting based on real-world values such as intensity (in lumens) and color temperature (in degrees Kelvin). - Both PBR and HDR camera features provide better results than traditional rendering techniques and, as a result, SceneKit now performs all color calculations in a linear color space (using P3 color gamut on wide-color device displays).
- SceneKit now color matches all colors by reading the color profile information.
- SceneKit interprets color component values in a linear RGB color space for all shader types.
- Both linear color space rendering and wide-color can be disabled by specifying the
SCNDisableLinearSpaceRendering
andSCNDisableWideGamut
keys in the app'sInfo.plist
. - Build arbitrary polygon primates (either loaded from files or generated programmatically) to specify geometry with the new SCNGeometryPrimitiveTypePolygon class.
- Since SceneKit reads and adjust for color profile information in texture images, use Asset Catalogs for all images to ensure this information is provided.
SpriteKit Enhancements
The following enhancements have been made to the SpriteKit framework in iOS 10:
- Custom shaders can provide attributes (
SKAttribute
) that can be configured separately by each node that uses the shader by supplying an Attribute Value (SKAttributeValue
). - Tilemaps now support square, hexagonal and isometric tile shapes for 2D, 2.5D and side-scrolling games using the
SKTileMapMode
,SKTileGroup
,SKTileGroupRule
andSKTileSet
classes. - Use the new
SKWarpGeometry
class to stretch or distort SKSpriteNode or SKEffectNode rendering. The new SKAction class can be used to animate transitions between warp effects. - The SKView class provides several new methods to give fine-grained control over when and how a scene is rendered.
ScrollView Enhancements
The following enhancements have been made to the ScrollView control in iOS 10.3:
UIScrollView
now include theIndexDisplayMode
property to control how the index is shown while the user is scrolling as aUIScrollViewIndexDisplayMode
of:Automatic
- The index display is controlled by the OS.AlwaysHidden
- The index display is always hidden.
UIKit Enhancements
The following enhancements have been made to the UIKit framework in iOS 10:
- The new UIPasteboard API provides new options (such as lifetime limitations) and will automatically declare compatible content types for common class types.
- New fully interactive, object-based, interruptible animation support has been added and can be linked to gestures. Please see Apple's UIViewAnimating Protocol Reference, UIViewPropertyAnimator Class Reference, UITimingCurveProvider Protocol Reference, UICubicTimingParameters Class Reference and UISpringTimingParameter Class Reference for more information.
- The new
UIPreviewInteraction
andUIPreviewInteractionDelegate
allow the developer app to provide a custom interface for peek and pop operations. - The new
UIAccessibilityCustomRotor
class allows the app to provide custom, context-specific functionality to assistive technologies such as Voice Over. - Use the
UIAccessibilityIsAssistiveTouchRunning
andUIAccessibilityAssistiveTouchStatusDidChangeNotification
symbols to determine if AssistiveTouch is enabled. - Use the
UIAccessibilityHearingDevicePairedEar
andUIAccessibilityHearingDevicePairedEarDidChangeNotification
symbols to get the status of any paired MFi hearing aids. - To support Dynamic Type in labels, text fields and text boxes use the new
PreferredFontForTextStyle
method of theUIFont
class. - To decide if an element should update its font when the device's
UIContentSizeCategory
changes, use theAdjustsFontForContentSizeCategory
property of theUIContentSizeCategoryAdjusting
delegate. - The
OpenURL
method of theUIApplication
class is called asynchronously and now supports a Completion Handler that is called after the open action has completed. - Initiate CloudKit sharing and modify its properties using the new
UICloudSharingController
andUICloudSharingControllerDelegate
classes. - Take advantage of prefetched cells to improve the scrolling experience of
UICollectionViews
with the newUICollectionViewDataSourcePrefetching
delegate. - The developer can now control the appearance of the badge for tab bar items (such as text and background color).
- The Refresh Control is now supported in all scroll view and scroll view subclasses (such as
UICollectionView
).
WebKit Enhancements
The following enhancements have been made to the WebKit framework in iOS 10:
- Peek and pop support has been added to the
WKWebView
class. Use theShouldPreviewElement
method to determine if a given web view should display a preview.