其他 tvOS 10 框架更改
除了对 tvOS 的重大更改外,Apple 还对 tvOS 10 中的多个现有框架进行了修改和改进。
AVFoundation 框架新增内容
AVFoundation 框架包括以下增强功能:
- 在 tvOS 10 中,应用不再基于内容类型实现不同的 AVPlayerItem 行为。 只需设置
Rate
属性,AVFoundation 将确定何时有足够的内容可供播放而不会停止。 - 新的
AVPlayerLooper
类可以更轻松地在播放期间循环播放给定的媒体片段。
AVKit 框架增强功能
AVKit 框架包括以下增强功能:
Core Data 增强
tvOS 10 包括核心数据框架的以下增强功能:
- 根 NSManagedObjectContext 对象支持并发故障处理和提取,无需序列化。
- NSPersistentStoreCoordinator 类维护 SQLite 数据存储池。
- WAL 日志模式下具有 SQLite 数据存储的 NSManagedObjectContext 对象支持新的查询生成功能,其中托管对象上下文 (MOC) 可以固定到特定的数据库版本,以便将来提取和故障处理事务。
- 使用高级
NSPersistenceContainer
引用NSPersistentStoreCoordinator
、NSManagedObjectModel 和其他 Core Data 配置资源。 NSManagedObject
中添加了几个新的便捷方法,使执行提取和创建子类变得更加容易。
有关详细信息,请参阅 Apple 的 Core Data 框架参考。
核心图形增强功能
tvOS 10 包括核心图形框架的以下增强功能:
- 新的 CGColorConverterRef 类可用于执行一系列颜色转换。
Core Image 增强
tvOS 10 对核心映像框架进行了以下增强:
- CIFilter 类的
ImageWithExtent
方法可用于将自定义处理插入到筛选操作中。 在处理图像进行输出或显示时,Core Image 将调用筛选器之间给定的回调。 - 现在,应用可以通过在处理前后转换颜色空间,在核心图像上下文的工作颜色空间之外处理颜色空间中的图像。
- 对
UIImageView
对象中的UIImage
渲染(由 Core Image 图像存储支持时)进行了多项渲染性能增强。 - 标记为宽色域的
UIImage
对象将在支持宽色的 iOS 设备上的UIImageView
对象中渲染为宽色域颜色。 - Core Image 内核代码现在可以请求特定的像素输出格式。
此外,还添加了以下新的 Core Image 筛选器:
CINinePartTiled
CINinePartStretched
CIHueSaturationValueGradient
CIEdgePreserveUpsampleFilter
CIClamp
Foundation 增强
已对 tvOS 10 的基础框架进行了以下增强:
- 使用新的 NSDateInterval 类进行日期和时间间隔计算(例如持续时间),以比较间隔并测试间隔交集。
- NSLocal 类中添加了几个新属性,以获取本地信息和可用的显示格式。
- 使用新的 NSMeasurement 类在不同的度量单位 (UOM) 之间进行转换或对不同 UOM 中的值执行计算。
- 使用新的 NSMeasurementFormatter 类设置本地化度量结果的格式,以便向最终用户显示。
- 使用新的 NSUnit 和 NSDimension 类来表示特定的 UOM。
GameKit 增强
已对 tvOS 10 中的 GameKit 框架进行了以下增强:
- GKCloudPlayer 类已实现新的仅限 iCloud 的帐户类型。
- 新的 GKGameSession 类提供用于管理 Game Center 上的持久数据存储的通用解决方案。
GKGameSession
维护玩家列表,应用负责实现参与者日期在玩家之间存储、检索或交换的方式和时间。 在许多情况下,游戏会话可以取代现有的回合制比赛、实时比赛或持久的游戏保存方法。
GameplayKit 增强
已对 tvOS 10 中的 GameplayKit 框架进行了以下增强:
- 添加了程序噪声生成功能,可用于增强自然纹理的真实感、为相机运动添加真实感并帮助生成丰富的游戏世界。
- 使用空间分区对游戏世界数据进行分区以实现高效搜索。
- 添加了新的蒙特卡洛策略师 (GKMonteCarloStrategist),以进行详尽的可能的移动计算。
- 添加了新的决策树 API(GKDecisionTree 和 GKDecisionNode)以增强游戏生成 AI。
- 使用新的 GKAgent3D 和 GKGraphNode3D 类向现有代理和路径查找行为添加了 3D 支持。
- 使用新的 GKMeshGraph 类提供高性能、外观自然的路径。
- 新的 GKScene 和 GKSKNodeComponent 类使 GameplayKit 和 SpriteKit 的组合变得比以往更容易。
Metal 增强
已对 tvOS 10 中的 Metal 框架进行了以下增强:
- 3D 应用和游戏现在可以使用 Tessellation 通过 GPU 高效渲染复杂的场景和几何图形。
- 使用函数专用化为场景创建高度优化的材料和灯光组合函数集合。
- 使用资源堆和无内存渲染目标提供对资源分配的精细控制,以优化基于 Metal 的应用的性能。
有关详细信息,请参阅 Apple 的 Metal 编程指南。
Metal 性能着色器增强功能
已对 tvOS 10 中的 Metal 性能着色器框架进行了以下增强:
- 许多新内核已添加到 Metal 性能着色器框架,使应用能够利用高优化的数据并行计算,例如颜色空间转换和神经网络操作。
ModelIO 增强
已对 tvOS 10 中的 ModelIO 框架进行了以下增强:
- 现在支持 USD 文件格式。
- 使用新的
MDLMaterialPropertyGraph
类可以轻松支持模型的运行时更改。 - MDLVoxelArray 类中添加了有符号距离字段支持。
- 使用新的
MDLLightProbeIrradianceDataSource
类来协助光探测放置。
SceneKit 增强
已对 tvOS 10 中的 SceneKit 框架进行了以下增强:
- SceneKit 现在包含一个新的基于物理的渲染 (PBR) 系统,可以通过更简单的资产创作获得更真实的结果。
- 使用新的 SCNLightingModelPhysicallyBased 着色模型可生成各种逼真的着色效果,同时仅需要三个基本属性(
Diffuse
、Metalness
和Roughness
)。 - 由于 PBR 底纹最适合基于环境的照明,请使用该
LightingEnvironment
属性将基于图像的照明分配给整个场景。 - 使用该
IESProfileURL
属性导入基于真实世界值的照明装置,例如强度(以流明亮度为单位)和颜色温度(以开尔文度为单位)。 - SCNCamera 类可以通过使用 HDR 功能和效果来提供更高的真实感。 使用自适应曝光创建自动效果或使用调色、颜色边缘和颜色分级来为游戏添加电影效果。
- PBR 和 HDR 相机功能都提供了比传统渲染技术更好的结果,因此,SceneKit 现在在线性颜色空间中执行所有颜色计算(在宽颜色设备显示器上使用 P3 色域)。
- SceneKit 现在通过读取颜色配置文件信息来匹配所有颜色。
- SceneKit 解释所有着色器类型的线性 RGB 颜色空间中的颜色分量值。
- 由于 SceneKit 会读取并调整纹理图像中的颜色配置文件信息,因此请对所有图像使用资产目录以确保提供此信息。
- 通过在应用的
Info.plist
中指定SCNDisableLinearSpaceRendering
和SCNDisableWideGamut
键,可以禁用线性颜色空间渲染和宽色。 - 生成任意多边形灵长类动物(从文件加载或以编程方式生成)以使用新的 SCNGeometryPrimitiveTypePolygon 类指定几何形状。
SpriteKit 增强
已对 tvOS 10 中的 SpriteKit 框架进行了以下增强:
- 图块现在支持使用
SKTileMapMode
、SKTileGroup
、SKTileGroupRule
和SKTileSet
类的 2D、2.5D 和横向卷轴游戏的方形、六边形和等距图块形状。 - 使用新的
SKWarpGeometry
类拉伸或扭曲 SKSpriteNode 或 SKEffectNode 渲染。 新的 SKAction 类可用于制作扭曲效果之间的过渡动画。 - 自定义着色器可以提供属性 (
SKAttribute
),使用该着色器的每个节点可以通过提供属性值 (SKAttributeValue
) 来单独配置这些属性。 - SKView 类提供了多种新方法,可以对场景的渲染时间和方式进行精细控制。
UIKit 增强
已对 tvOS 10 中的 UIKit 框架进行了以下增强:
- 焦点 API 已得到增强,除了
UIViews
之外,还支持非视图项的焦点。 支持焦点的项目必须实现IUIFocusItem
接口。 - 新的
UIGraphicsRender
类提供了一种面向对象的方法,用于从 UIKit 呈现或核心图形创建位图或 PDF,并替换弃用的UIGraphicsBeginImageContext
方法。 - 添加了
UIUserInterfaceStyle
类以确定当前处于活动状态的用户界面主题(深色或浅色)。 - 添加了新的完全交互式、基于对象的可中断动画支持,并链接到手势。 请参阅 Apple 的 UIViewAnimating 协议参考、UIViewPropertyAnimator 类参考、UITimingCurveProvider 协议参考、UICubicTimingParameters 类参考和 UISpringTimingParameter 类参考了解详细信息。
- 新的
UIPreviewInteraction
和UIPreviewInteractionDelegate
允许应用提供用于速览和弹出操作的自定义界面。 - 新的
UIAccessibilityCustomRotor
类允许应用为 Voice Over 等辅助技术提供自定义的、特定于上下文的功能。 - 使用
UIAccessibilityIsAssistiveTouchRunning
和UIAccessibilityAssistiveTouchStatusDidChangeNotification
符号确定 AssistiveTouch 是否已启用。 - 使用
UIAccessibilityHearingDevicePairedEar
和UIAccessibilityHearingDevicePairedEarDidChangeNotification
符号获取任何配对的 MFi 助听器的状态。 - 新的 UIPasteboard API 提供了新选项(例如生命周期限制),并将自动声明常见类类型的兼容内容类型。
- 为了支持标签、文本字段和文本框中的动态类型,请使用
UIFont
类的新PreferredFontForTextStyle
方法。 - 若要确定元素在设备
UIContentSizeCategory
更改时是否应更新字体,请使用UIContentSizeCategoryAdjusting
委托的AdjustsFontForContentSizeCategory
属性。 - 应用现在可以控制选项卡栏项(如文本和背景色)的锁屏提醒的外观。
- 所有滚动视图和滚动视图子类(如
UICollectionView
)现在都支持刷新控件。 UIApplication
类的OpenURL
方法现在以异步方式调用,支持在打开完成后调用的完成处理程序。- 使用新的
UICloudSharingController
和UICloudSharingControllerDelegate
类启动 CloudKit 共享并修改其属性。 - 通过新的
UICollectionViewDataSourcePrefetching
委托,利用预提取的单元格来改善UICollectionViews
的滚动体验。