Additional iOS 10 Frameworks Changes
Let us know how you feel about this
last updated: 2017-03
This article covers additional, minor changes or enhancements to existing frameworks for iOS 10.
In addition to the major changes to iOS, Apple has made modifications and improvements to several existing frameworks in iOS 10 including the following:
- AV Foundation Framework Additions
- AVKit Additions
- Core Data Enhancements
- Core Image Enhancements
- Core Motion Additions
- Foundation Enhancements
- GameKit Enhancements
- GameplayKit Enhancements
- HealthKit Enhancements
- HomeKit Enhancements
- Metal Enhancements
- ModelIO Enhancements
- Photos Enhancements
- SceneKit Enhancements
- SpriteKit Enhancements
- ScrollView Enhancements
- UIKit Enhancements
- WebKit Enhancements
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
Rateproperty and AVFoundation will determine when enough content is available for playback without stalling.
- The new AVCapturePhotoOutput class replaces the deprecated
AVCaptureStillImageOutputclass 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
AVPlayerLooperclass makes it easier to loop a given piece of media during playback.
AVAssetDownloadURLSessionclass 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.
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
NSManagedObjectmaking it easier to perform fetches and create subclasses.
- Using the high-level
NSPersistenceContainerto reference the
NSPersistentStoreCoordinator, 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
FilterWithImageURLmethods of the CIFilter class to process RAW images.
- Several rendering performance enhancements have been made to
UIImagerendering (when backed by Core Image image stores) in
UIImageobjects tagged wide-gamut will render as wide-gamut color in
UIImageViewobjects on iOS devices that support wide color.
- Core Image kernel code can now request specific pixel output formats.
ImageWithExtentmethod 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:
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.
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 NSMeasuerment 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.
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.
GKGameSessionmaintains 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.
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.
The following enhancements have been made to the HealthKit framework in iOS 10:
- New metadata keys have been added for weather types (such as
HKWeatherConditionCloudy) and workout types (such as
HKWorkoutActivityTypeWheelchairRunPace) have been added.
- The new
HKCDADocumentclass has been added to represent a Clinical Document Architecture (CDA) formatted document.
- Use the new HKWorkoutConfiguration class to specify the
LocationTypeof a workout.
- The new HKWheelchairUseObject and the
WheelchairUsemethod of the HKHealthStore class have been added for working with wheelchair related health data.
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.
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.
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
MDLLightProbeIrradianceDataSourceclass to assist in Light Probe placement.
- Use the new
MDLMaterialPropertyGraphclass to easily support runtime changes to models.
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.
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.
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 filmatic 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 (
- Since PBR shading works best with environment-based lighting, use the
LightingEnvironmentproperty to assign image-based lighting to an entire scene.
- Use the
IESProfileURLproperty 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
SCNDisableWideGamutkeys in the app's
- 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.
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 (
- Tilemaps now support square, hexagonal and isometric tile shapes for 2D, 2.5D and side-scrolling games using the
- Use the new
SKWarpGeometryclass 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.
The following enhancements have been made to the ScrollView control in iOS 10.3:
UIScrollViewnow include the
IndexDisplayModeproperty to control how the index is shown while the user is scrolling as a
Automatic- The index display is controlled by the OS.
AlwaysHidden- The index display is always hidden.
See the iOSTenThree Sample for usage.
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. Pleas see Apple's UIViewAnimating Protocol Reference, UIViewPropertyAnimator Class Reference, UITimingCurveProvider Protocol Reference, UICubicTimingParameters Class Reference and UISpringTimingParameter Class Reference for more information.
- The new
UIPreviewInteractionDelegateallow the developer app to provide a custom interface for peek and pop operations.
- The new
UIAccessibilityCustomRotorclass allows the app to provide custom, context-specific functionality to assistive technologies such as Voice Over.
- Use the
UIAccessibilityAssistiveTouchStatusDidChangeNotificationsymbols to determine if AssistiveTouch is enabled.
- Use the
UIAccessibilityHearingDevicePairedEarDidChangeNotificationsymbols to get the status of any paired MFi hearing aids.
- To support Dynamic Type in labels, text fields and text boxes use the new
PreferredFontForTextStylemethod of the
- To decide if an element should update its font when the device's
UIContentSizeCategorychanges, use the
AdjustsFontForContentSizeCategoryproperty of the
OpenURLmethod of the
UIApplicationclass 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
- Take advantage of prefetched cells to improve the scrolling experience of
UICollectionViewswith the new
- 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
The following enhancements have been made to the WebKit framework in iOS 10:
- Peek and pop support has been added to the
WKWebViewclass. Use the
ShouldPreviewElementmethod to determine if a given web view should display a preview.