其他 tvOS 10 框架更改

除了对 tvOS 的重大更改外,Apple 还对 tvOS 10 中的多个现有框架进行了修改和改进。

AVFoundation 框架新增内容

AVFoundation 框架包括以下增强功能:

  • 在 tvOS 10 中,应用不再基于内容类型实现不同的 AVPlayerItem 行为。 只需设置 Rate 属性,AVFoundation 将确定何时有足够的内容可供播放而不会停止。
  • 新的 AVPlayerLooper 类可以更轻松地在播放期间循环播放给定的媒体片段。

AVKit 框架增强功能

AVKit 框架包括以下增强功能:

  • 现在,应用可以控制 AVPlayerViewController 的跳过行为,因此跳过手势可能会移动到播放列表中的下一个项目或在当前项内前进。

Core Data 增强

tvOS 10 包括核心数据框架的以下增强功能:

  • NSManagedObjectContext 对象支持并发故障处理和提取,无需序列化。
  • NSPersistentStoreCoordinator 类维护 SQLite 数据存储池。
  • WAL 日志模式下具有 SQLite 数据存储的 NSManagedObjectContext 对象支持新的查询生成功能,其中托管对象上下文 (MOC) 可以固定到特定的数据库版本,以便将来提取和故障处理事务。
  • 使用高级 NSPersistenceContainer 引用 NSPersistentStoreCoordinatorNSManagedObjectModel 和其他 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 类设置本地化度量结果的格式,以便向最终用户显示。
  • 使用新的 NSUnitNSDimension 类来表示特定的 UOM。

GameKit 增强

已对 tvOS 10 中的 GameKit 框架进行了以下增强:

  • GKCloudPlayer 类已实现新的仅限 iCloud 的帐户类型。
  • 新的 GKGameSession 类提供用于管理 Game Center 上的持久数据存储的通用解决方案。 GKGameSession 维护玩家列表,应用负责实现参与者日期在玩家之间存储、检索或交换的方式和时间。 在许多情况下,游戏会话可以取代现有的回合制比赛、实时比赛或持久的游戏保存方法。

GameplayKit 增强

已对 tvOS 10 中的 GameplayKit 框架进行了以下增强:

  • 添加了程序噪声生成功能,可用于增强自然纹理的真实感、为相机运动添加真实感并帮助生成丰富的游戏世界。
  • 使用空间分区对游戏世界数据进行分区以实现高效搜索。
  • 添加了新的蒙特卡洛策略师 (GKMonteCarloStrategist),以进行详尽的可能的移动计算。
  • 添加了新的决策树 API(GKDecisionTreeGKDecisionNode)以增强游戏生成 AI。
  • 使用新的 GKAgent3DGKGraphNode3D 类向现有代理和路径查找行为添加了 3D 支持。
  • 使用新的 GKMeshGraph 类提供高性能、外观自然的路径。
  • 新的 GKSceneGKSKNodeComponent 类使 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 着色模型可生成各种逼真的着色效果,同时仅需要三个基本属性(DiffuseMetalnessRoughness)。
  • 由于 PBR 底纹最适合基于环境的照明,请使用该 LightingEnvironment 属性将基于图像的照明分配给整个场景。
  • 使用该 IESProfileURL 属性导入基于真实世界值的照明装置,例如强度(以流明亮度为单位)和颜色温度(以开尔文度为单位)。
  • SCNCamera 类可以通过使用 HDR 功能和效果来提供更高的真实感。 使用自适应曝光创建自动效果或使用调色、颜色边缘和颜色分级来为游戏添加电影效果。
  • PBR 和 HDR 相机功能都提供了比传统渲染技术更好的结果,因此,SceneKit 现在在线性颜色空间中执行所有颜色计算(在宽颜色设备显示器上使用 P3 色域)。
  • SceneKit 现在通过读取颜色配置文件信息来匹配所有颜色。
  • SceneKit 解释所有着色器类型的线性 RGB 颜色空间中的颜色分量值。
  • 由于 SceneKit 会读取并调整纹理图像中的颜色配置文件信息,因此请对所有图像使用资产目录以确保提供此信息。
  • 通过在应用的 Info.plist 中指定 SCNDisableLinearSpaceRenderingSCNDisableWideGamut 键,可以禁用线性颜色空间渲染和宽色。
  • 生成任意多边形灵长类动物(从文件加载或以编程方式生成)以使用新的 SCNGeometryPrimitiveTypePolygon 类指定几何形状。

SpriteKit 增强

已对 tvOS 10 中的 SpriteKit 框架进行了以下增强:

  • 图块现在支持使用 SKTileMapModeSKTileGroupSKTileGroupRuleSKTileSet 类的 2D、2.5D 和横向卷轴游戏的方形、六边形和等距图块形状。
  • 使用新的 SKWarpGeometry 类拉伸或扭曲 SKSpriteNodeSKEffectNode 渲染。 新的 SKAction 类可用于制作扭曲效果之间的过渡动画。
  • 自定义着色器可以提供属性 (SKAttribute),使用该着色器的每个节点可以通过提供属性值 (SKAttributeValue) 来单独配置这些属性。
  • SKView 类提供了多种新方法,可以对场景的渲染时间和方式进行精细控制。

UIKit 增强

已对 tvOS 10 中的 UIKit 框架进行了以下增强:

  • 焦点 API 已得到增强,除了 UIViews之外,还支持非视图项的焦点。 支持焦点的项目必须实现 IUIFocusItem 接口。
  • 新的 UIGraphicsRender 类提供了一种面向对象的方法,用于从 UIKit 呈现或核心图形创建位图或 PDF,并替换弃用的 UIGraphicsBeginImageContext 方法。
  • 添加了 UIUserInterfaceStyle 类以确定当前处于活动状态的用户界面主题(深色或浅色)。
  • 添加了新的完全交互式、基于对象的可中断动画支持,并链接到手势。 请参阅 Apple 的 UIViewAnimating 协议参考UIViewPropertyAnimator 类参考UITimingCurveProvider 协议参考UICubicTimingParameters 类参考UISpringTimingParameter 类参考了解详细信息。
  • 新的 UIPreviewInteractionUIPreviewInteractionDelegate 允许应用提供用于速览和弹出操作的自定义界面。
  • 新的 UIAccessibilityCustomRotor 类允许应用为 Voice Over 等辅助技术提供自定义的、特定于上下文的功能。
  • 使用 UIAccessibilityIsAssistiveTouchRunningUIAccessibilityAssistiveTouchStatusDidChangeNotification 符号确定 AssistiveTouch 是否已启用。
  • 使用 UIAccessibilityHearingDevicePairedEarUIAccessibilityHearingDevicePairedEarDidChangeNotification 符号获取任何配对的 MFi 助听器的状态。
  • 新的 UIPasteboard API 提供了新选项(例如生命周期限制),并将自动声明常见类类型的兼容内容类型。
  • 为了支持标签、文本字段和文本框中的动态类型,请使用 UIFont 类的新 PreferredFontForTextStyle 方法。
  • 若要确定元素在设备 UIContentSizeCategory 更改时是否应更新字体,请使用 UIContentSizeCategoryAdjusting 委托的 AdjustsFontForContentSizeCategory 属性。
  • 应用现在可以控制选项卡栏项(如文本和背景色)的锁屏提醒的外观。
  • 所有滚动视图和滚动视图子类(如 UICollectionView)现在都支持刷新控件。
  • UIApplication 类的 OpenURL 方法现在以异步方式调用,支持在打开完成后调用的完成处理程序。
  • 使用新的 UICloudSharingControllerUICloudSharingControllerDelegate 类启动 CloudKit 共享并修改其属性。
  • 通过新的 UICollectionViewDataSourcePrefetching 委托,利用预提取的单元格来改善 UICollectionViews 的滚动体验。