其他 iOS 10 框架更改

本文介绍对 iOS 10 现有框架的其他细微更改或增强

AV 基础框架新增功能

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

  • 在 iOS 10 中,开发人员不再需要根据内容类型实现不同的 AVPlayerItem 行为。 只需设置 Rate 属性,AVFoundation 将确定何时有足够的内容可供播放而不会停止。
  • 新的 AVCapturePhotoOutput 类取代了已弃用的 AVCaptureStillImageOutput 类,并通过提供对捕获过程的复杂控制和监视以及对实时照片和 RAW 捕获等新功能的支持,提供了处理所有摄影工作流的统一方法格式。
  • 新的 AVPlayerLooper 类可以更轻松地在播放期间循环播放给定的媒体片段。
  • AVAssetDownloadURLSession 类允许下载并稍后播放 FairPlay 加密的 HLS 流。
  • 默认情况下,当受设备硬件支持时,AVCaptureSession 类会自动支持宽色、宽色域捕获。 有关详细信息,请参阅 Apple 的 iOS 设备兼容性参考

AVKit 新增功能

AVKit 框架现在包含新的 UpdatesNowPlayingInfoCenter 属性,用于指示何时应更新 Now Playing Info Center。

Core Data 增强

iOS 10 对 Core Data 框架进行了以下增强:

  • WAL 日志模式下具有 SQLite 数据存储的 NSManagedObjectContext 对象支持新的查询生成功能,其中托管对象上下文 (MOC) 可以固定到特定的数据库版本,以便将来提取和故障处理事务。
  • NSManagedObjectContext 对象支持并发故障处理和提取,无需序列化。
  • NSPersistentStoreCoordinator 类维护 SQLite 数据存储池。
  • NSManagedObject 中添加了几个新的便捷方法,使执行提取和创建子类变得更加容易。
  • 使用高级 NSPersistenceContainer 引用 NSPersistentStoreCoordinatorNSManagedObjectModel 和其他 Core Data 配置资源。

有关详细信息,请参阅 Apple 的 Core Data 框架参考

Core Image 增强

iOS 10 对 Core Image 框架进行了以下增强:

  • 现在,开发人员可以通过在处理前后转换颜色空间来处理 Core Image 上下文工作颜色空间之外的颜色空间中的图像。
  • 对于使用 A8 或 A9 CPU 的 iOS 设备,现在支持 RAW 图像格式。 Core Image 现在支持解码来自内置 iSight 相机或第三方相机的 RAW 图像。 使用 CIFilter 类的 FilterWithImageDataFilterWithImageURL 方法处理 RAW 图像。
  • UIImageView 对象中的 UIImage 渲染(由 Core Image 图像存储支持时)进行了多项渲染性能增强。
  • 标记为宽色域的 UIImage 对象将在支持宽色的 iOS 设备上的 UIImageView 对象中渲染为宽色域颜色。
  • Core Image 内核代码现在可以请求特定的像素输出格式。
  • CIFilter 类的 ImageWithExtent 方法可用于将自定义处理插入到筛选操作中。 在处理图像进行输出或显示时,Core Image 将调用筛选器之间给定的回调。

此外,还添加了以下新的 Core Image 筛选器:

  • CINinePartTiled
  • CINinePartStretched
  • CIHueSaturationValueGradient
  • CIEdgePreserveUpsampleFilter
  • CIClamp

Core Motion 新增功能

Core Motion 框架是 iOS 10 的新增功能,包含计步器事件,使应用能够接收用户在跑步时暂停和恢复跟踪的快速实时通知。 使用 CMPedometer 注册前台或后台计步器事件。

Foundation 增强

iOS 10 的 Foundation 框架进行了以下增强:

  • 使用新的 NSMeasurementFormatter 类设置本地化度量结果的格式,以便向最终用户显示。

  • 使用新的 NSDateInterval 类进行日期和时间间隔计算(例如持续时间),以比较间隔并测试间隔交集。

  • 使用新的 NSMeasurement 类在不同的度量单位 (UOM) 之间进行转换或对不同 UOM 中的值执行计算。

  • 使用新的 NSUnitNSDimension 类来表示特定的 UOM。

  • NSLocal 类中添加了几个新属性,以获取本地信息和可用的显示格式。

GameKit 增强

iOS 10 中的 GameKit 框架进行了以下增强:

  • Game Center 应用已被弃用并从 iOS 中删除。 如果应用使用 GameKit,则它必须提供自己的界面来显示 GameKit 功能,例如排行榜等
  • GKCloudPlayer 类已实现新的仅限 iCloud 的帐户类型。
  • 新的 GKGameSession 类提供用于管理 Game Center 上的持久数据存储的通用解决方案。 GKGameSession 维护玩家列表,应用负责实现在玩家之间存储、检索或交换参与者数据的方式和时间。 在许多情况下,游戏会话可以取代现有的回合制比赛、实时比赛或持久的游戏保存方法。

GameplayKit 增强

iOS 10 中的 GameplayKit 框架进行了以下增强:

  • 使用新的 GKMeshGraph 类提供高性能、外观自然的路径。
  • 添加了程序噪声生成功能,可用于增强自然纹理的真实感、为相机运动添加真实感并帮助生成丰富的游戏世界。
  • 使用空间分区对游戏世界数据进行分区以实现高效搜索。
  • 添加了新的蒙特卡洛策略师 (GKMonteCarloStrategist),以进行详尽的可能的移动计算。
  • 使用新的 GKAgent3DGKGraphNode3D 类向现有代理和路径查找行为添加了 3D 支持。
  • 新的 GKSceneGKSKNodeComponent 类使 GameplayKit 和 SpriteKit 的组合变得比以往更容易。
  • 添加了新的决策树 API(GKDecisionTreeGKDecisionNode)以增强游戏生成 AI。

HealthKit 增强

iOS 10 中的 HealthKit 框架进行了以下增强:

  • 已为天气类型(例如 HKWeatherConditionClearHKWeatherConditionCloudy)添加了新的元数据键,并添加了锻炼类型(例如 HKWorkoutActivityTypeFlexibilityHKWorkoutActivityTypeWheelchairRunPace)。
  • 添加了新的 HKCDADocument 类来表示临床文档体系结构 (CDA) 格式的文档。
  • 使用新的 HKWorkoutConfiguration 类指定锻炼的 ActivityTypeLocationType
  • 添加了新的 HKWheelchairUseObjectHKHealthStore 类的 WheelchairUse 方法,用于处理与轮椅相关的健康数据。

HomeKit 增强

iOS 10 中的 HomeKit 框架进行了以下增强:

  • 添加了新的服务和特征。
  • iPad 可以配置为充当 HomeKit Hub,以提供远程配件访问、运行自动化触发器并启用共享用户权限。
  • 添加了对摄像头和门铃附件的支持。
  • 为附件提供了更多上下文和配置。

有关详细信息,请参阅我们的 HomeKit 简介文档。

Metal 增强

iOS 10 中的 Metal 框架进行了以下增强:

  • 3D 应用和游戏现在可以使用 Tessellation 通过 GPU 高效渲染复杂的场景和几何图形
  • 使用资源堆和无内存渲染目标提供对资源分配的精细控制,以优化基于 Metal 的应用的性能。
  • 使用函数专用化为场景创建高度优化的材料和灯光组合函数集合。

有关详细信息,请参阅 Apple 的 Metal 编程指南

ModelIO 增强

iOS 10 中的 ModelIO 框架进行了以下增强:

  • 现在支持 USD 文件格式。
  • MDLVoxelArray 类中添加了有符号距离字段支持。
  • 使用新的 MDLLightProbeIrradianceDataSource 类来协助光探测放置。
  • 使用新的 MDLMaterialPropertyGraph 类可以轻松支持模型的运行时更改。

Photos 增强

iOS 10 中的 Photos 框架进行了以下增强:

  • 使用 CIImageProcessorInputCIImageProcessorOutput 类可以利用新的 Core Image 处理器功能来执行编辑。
  • 实时照片编辑现在可用于支持 Photos 框架的应用和照片编辑扩展(在照片和相机应用内部使用)。
  • 使用新的 PHLivePhotoEditingContext 类将编辑应用于实况照片的视频和静态内容。

ReplayKit 增强

iOS 10 中的 ReplayKit 框架进行了以下增强:

SceneKit 增强

iOS 10 中的 SceneKit 框架进行了以下增强:

  • SCNCamera 类可以通过使用 HDR 功能和效果来提供更高的真实感。 使用自适应曝光创建自动效果,或使用渐晕、彩色边纹和颜色分级为游戏添加填充效果。
  • SceneKit 现在包含一个新的基于物理的渲染 (PBR) 系统,可以通过更简单的资产创作获得更真实的结果。
  • 使用新的 SCNLightingModelPhysicallyBased 着色模型可生成各种逼真的着色效果,同时仅需要三个基本属性(DiffuseMetalnessRoughness)。
  • 由于 PBR 着色与基于环境的照明配合使用效果最佳,因此请使用 LightingEnvironment 属性将基于图像的照明分配到整个场景。
  • 使用 IESProfileURL 属性导入真实世界的灯具,这些灯具根据强度(以流明为单位)和色温(以开氏度为单位)等真实值定义照明。
  • PBR 和 HDR 相机功能都提供了比传统渲染技术更好的结果,因此,SceneKit 现在在线性颜色空间中执行所有颜色计算(在宽颜色设备显示器上使用 P3 色域)。
  • SceneKit 现在通过读取颜色配置文件信息来匹配所有颜色。
  • SceneKit 解释所有着色器类型的线性 RGB 颜色空间中的颜色分量值。
  • 通过在应用的 Info.plist 中指定 SCNDisableLinearSpaceRenderingSCNDisableWideGamut 键,可以禁用线性颜色空间渲染和宽色。
  • 生成任意多边形灵长类动物(从文件加载或以编程方式生成)以使用新的 SCNGeometryPrimitiveTypePolygon 类指定几何形状。
  • 由于 SceneKit 会读取并调整纹理图像中的颜色配置文件信息,因此请对所有图像使用资产目录以确保提供此信息。

SpriteKit 增强

iOS 10 中的 SpriteKit 框架进行了以下增强:

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

ScrollView 增强

iOS 10.3 中的 ScrollView 控件进行了以下增强:

  • UIScrollView 现在包含 IndexDisplayMode 属性,用于控制当用户滚动为以下内容的 UIScrollViewIndexDisplayMode 时索引的显示方式:
    • Automatic - 索引显示由操作系统控制。
    • AlwaysHidden - 索引显示始终隐藏。

UIKit 增强

iOS 10 中的 UIKit 框架进行了以下增强:

  • 新的 UIPasteboard API 提供了新选项(例如生命周期限制),并将自动声明常见类类型的兼容内容类型。
  • 添加了新的完全交互式、基于对象、可中断的动画支持,并且可以链接到手势。 请参阅 Apple 的 UIViewAnimating 协议参考UIViewPropertyAnimator 类参考UITimingCurveProvider 协议参考UICubicTimingParameters 类参考UISpringTimingParameter 类参考了解详细信息。
  • 新的 UIPreviewInteractionUIPreviewInteractionDelegate 允许开发人员应用为查看和弹出操作提供自定义界面。
  • 新的 UIAccessibilityCustomRotor 类允许应用为 Voice Over 等辅助技术提供自定义的、特定于上下文的功能。
  • 使用 UIAccessibilityIsAssistiveTouchRunningUIAccessibilityAssistiveTouchStatusDidChangeNotification 符号确定 AssistiveTouch 是否已启用。
  • 使用 UIAccessibilityHearingDevicePairedEarUIAccessibilityHearingDevicePairedEarDidChangeNotification 符号获取任何配对的 MFi 助听器的状态。
  • 为了支持标签、文本字段和文本框中的动态类型,请使用 UIFont 类的新 PreferredFontForTextStyle 方法。
  • 若要确定当设备的 UIContentSizeCategory 更改时元素是否应更新其字体,请使用 UIContentSizeCategoryAdjusting 委托的 AdjustsFontForContentSizeCategory 属性。
  • UIApplication 类的 OpenURL 方法是异步调用的,现在支持在打开操作完成后调用的完成处理程序。
  • 使用新的 UICloudSharingControllerUICloudSharingControllerDelegate 类启动 CloudKit 共享并修改其属性。
  • 通过新的 UICollectionViewDataSourcePrefetching 委托,利用预提取的单元格来改善 UICollectionViews 的滚动体验。
  • 开发人员现在可以控制标签栏项的徽章外观(例如文本和背景色)。
  • 现在,所有滚动视图和滚动视图子类(例如 UICollectionView)都支持刷新控件。

WebKit 增强

iOS 10 中的 WebKit 框架进行了以下增强:

  • WKWebView 类中添加了速览和弹跳支持。 使用 ShouldPreviewElement 方法确定给定的 Web 视图是否应显示预览。