Additional tvOS 10 Frameworks Changes
This article covers additional, minor changes or enhancements to existing frameworks for tvOS 10.
In addition to the major changes to tvOS, Apple has made modifications and improvements to several existing frameworks in tvOS 10.
AV Foundation Framework Additions
The AVFoundation framework includes the following enhancements:
- In tvOS 10, the app no longer implements 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
AVPlayerLooperclass makes it easier to loop a given piece of media during playback.
AVKit Framework Enhancements
The AVKit framework includes the following enhancements:
- The app now has control over the skipping behavior of the AVPlayerViewController so a skipping gesture might move to the next item in the playlist or advance within the current item.
Core Data Enhancements
tvOS 10 includes the following enhancements to the Core Data framework:
- Root NSManagedObjectContext objects supports concurrent faulting and fetching without serialization.
- The NSPersistentStoreCoordinator class maintains a pool of SQLite data stores.
- 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.
- Using the high-level
NSPersistenceContainerto reference the
NSPersistentStoreCoordinator, NSManagedObjectModel and other Core Data configuration resources.
- Several new convenience methods have been added to
NSManagedObjectmaking it easier to perform fetches and create subclasses.
For more information, please see Apple's Core Data Framework Reference.
Core Graphics Enhancements
tvOS 10 includes the following enhancements to the Core graphics framework:
- The new CGColorConverterRef class can be used to perform a series of color conversions.
Core Image Enhancements
tvOS 10 makes the following enhancements to the Core Image framework:
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.
- The app 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.
- 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.
Additionally, the following new Core Image filters have been added:
The following enhancements have been made to the Foundation framework for tvOS 10:
- Use the new NSDateInterval class to make date and time interval calculations such as durations, for comparing intervals and testing for interval intersections.
- Several new properties have been added to the NSLocal class to acquire local information and the available display formats.
- Use the new NSMeasuerment class to convert between different Units of Measure (UOM) or perform calculations on values in different UOMs.
- Use the new NSMeasurementFormatter class to format localized measurements for displaying to the end user.
- Use the new NSUnit and NSDimension classes for representing specific UOMs.
The following enhancements have been made to the GameKit framework in tvOS 10:
- 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 form 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 tvOS 10:
- 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.
- A new Decision Tree API has been added (GKDecisionTree and GKDecisionNode) to enhance the game-building AI.
- 3D support has been added to existing agent and path-finding behaviors using the new GKAgent3D and GKGraphNode3D classes.
- Use the new GKMeshGraph class to provide high-performance, natural-looking paths.
- The new GKScene and GKSKNodeComponent classes make combining GameplayKit and SpriteKit easier than ever.
The following enhancements have been made to the Metal framework in tvOS 10:
- 3D apps and games can now use Tessellation to efficiently render complex scenes and geometry via the GPU.
- Use Function Specialization to create a highly-optimized collection of material and light combination functions for a scene.
- Provide fine-grained control of resource allocation to optimize performance of Metal based apps using Resource Heaps and Memoryless Render Targets.
To learn more, please see Apple's Metal Programming Guide.
Metal Performance Shaders Enhancements
The following enhancements have been made to the Metal Performance Shaders framework in tvOS 10:
- Many new kernels have been added to the Metal Performance Shaders framework to allow the app to take advantage of high-optimized, data-parallel computations such as color space conversions and neural network operations.
The following enhancements have been made to the ModelIO framework in tvOS 10:
- The USD file format is now supported.
- Use the new
MDLMaterialPropertyGraphclass to easily support runtime changes to models.
- Signed Distance Field support has been added to the MDLVoxelArray class.
- Use the new
MDLLightProbeIrradianceDataSourceclass to assist in Light Probe placement.
The following enhancements have been made to the SceneKit framework in tvOS 10:
- 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 tan entire scene.
- Use the
IESProfileURLproperty to import real-world light fixtures that define lighting base on real-world values such as intensity (in lumens) and color temperature (in degrees Kelvin).
- 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.
- 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.
- Since SceneKit reads and adjust for color profile information in texture images, use Asset Catalogs for all images to ensure this information is provided.
- 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.
The following enhancements have been made to the SpriteKit framework in tvOS 10:
- 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.
- Custom shaders can provide attributes (
SKAttribute) that can be configured separately by each node that uses the shader by supplying an Attribute Value (
- 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 UIKit framework in tvOS 10:
- The focus API has been enhanced to support focus of non-view item in addition to
UIViews. Items that support focus must implement the
- The new
UIGraphicsRenderclass provides an object-oriented method of creating bitmaps or PDFs from UIKit rendering or Core Graphics and replaces the deprecated
UIUserInterfaceStyleclass was added to determine which user interface theme (dark or light) is currently active.
- New fully interactive, object-based, interruptible animation support has been added and van 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 app 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.
- The new UIPasteboard API provides new options (such as lifetime limitations) and will automatically declare compatible content types for common class types.
- To support Dynamic Type in labels, text fields and text boxes use the new
PreferredFontForTextStylemethod of the
- To decide if an element should update it font when the devices
UIContentSizeCategorychanges, use the
AdjustsFontForContentSizeCategoryproperty of the
- The app can now control the appearance of the badge for tab bar items such as text and background color.
- The Refresh Control in now supported in all scroll view and scroll view subclasses (such as
OpenURLmethod of the
UIApplicationclass is called asynchronously now supports a Completion Handler that is called after the open 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