其他 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
引用NSPersistentStoreCoordinator
、NSManagedObjectModel 和其他 Core Data 配置资源。
有关详细信息,请参阅 Apple 的 Core Data 框架参考。
Core Image 增强
iOS 10 对 Core Image 框架进行了以下增强:
- 现在,开发人员可以通过在处理前后转换颜色空间来处理 Core Image 上下文工作颜色空间之外的颜色空间中的图像。
- 对于使用 A8 或 A9 CPU 的 iOS 设备,现在支持 RAW 图像格式。 Core Image 现在支持解码来自内置 iSight 相机或第三方相机的 RAW 图像。 使用 CIFilter 类的
FilterWithImageData
或FilterWithImageURL
方法处理 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 中的值执行计算。
使用新的 NSUnit 和 NSDimension 类来表示特定的 UOM。
NSLocal 类中添加了几个新属性,以获取本地信息和可用的显示格式。
GameKit 增强
iOS 10 中的 GameKit 框架进行了以下增强:
- Game Center 应用已被弃用并从 iOS 中删除。 如果应用使用 GameKit,则它必须提供自己的界面来显示 GameKit 功能,例如排行榜等。
- GKCloudPlayer 类已实现新的仅限 iCloud 的帐户类型。
- 新的 GKGameSession 类提供用于管理 Game Center 上的持久数据存储的通用解决方案。
GKGameSession
维护玩家列表,应用负责实现在玩家之间存储、检索或交换参与者数据的方式和时间。 在许多情况下,游戏会话可以取代现有的回合制比赛、实时比赛或持久的游戏保存方法。
GameplayKit 增强
iOS 10 中的 GameplayKit 框架进行了以下增强:
- 使用新的 GKMeshGraph 类提供高性能、外观自然的路径。
- 添加了程序噪声生成功能,可用于增强自然纹理的真实感、为相机运动添加真实感并帮助生成丰富的游戏世界。
- 使用空间分区对游戏世界数据进行分区以实现高效搜索。
- 添加了新的蒙特卡洛策略师 (GKMonteCarloStrategist),以进行详尽的可能的移动计算。
- 使用新的 GKAgent3D 和 GKGraphNode3D 类向现有代理和路径查找行为添加了 3D 支持。
- 新的 GKScene 和 GKSKNodeComponent 类使 GameplayKit 和 SpriteKit 的组合变得比以往更容易。
- 添加了新的决策树 API(GKDecisionTree 和 GKDecisionNode)以增强游戏生成 AI。
HealthKit 增强
iOS 10 中的 HealthKit 框架进行了以下增强:
- 已为天气类型(例如
HKWeatherConditionClear
和HKWeatherConditionCloudy
)添加了新的元数据键,并添加了锻炼类型(例如HKWorkoutActivityTypeFlexibility
和HKWorkoutActivityTypeWheelchairRunPace
)。 - 添加了新的
HKCDADocument
类来表示临床文档体系结构 (CDA) 格式的文档。 - 使用新的 HKWorkoutConfiguration 类指定锻炼的
ActivityType
和LocationType
。 - 添加了新的 HKWheelchairUseObject 和 HKHealthStore 类的
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 框架进行了以下增强:
- 使用 CIImageProcessorInput 和 CIImageProcessorOutput 类可以利用新的 Core Image 处理器功能来执行编辑。
- 实时照片编辑现在可用于支持 Photos 框架的应用和照片编辑扩展(在照片和相机应用内部使用)。
- 使用新的 PHLivePhotoEditingContext 类将编辑应用于实况照片的视频和静态内容。
ReplayKit 增强
iOS 10 中的 ReplayKit 框架进行了以下增强:
- 使用 RPScreenRecorder、RPBroadcastActivityViewController 和 RPBroadcastController 类支持通过第三方网站广播录制的媒体。
- 需要广播 UI 和 Broadcast Upload 扩展来支持应用中的 ReplayKit 第三方广播服务。
SceneKit 增强
iOS 10 中的 SceneKit 框架进行了以下增强:
- SCNCamera 类可以通过使用 HDR 功能和效果来提供更高的真实感。 使用自适应曝光创建自动效果,或使用渐晕、彩色边纹和颜色分级为游戏添加填充效果。
- SceneKit 现在包含一个新的基于物理的渲染 (PBR) 系统,可以通过更简单的资产创作获得更真实的结果。
- 使用新的 SCNLightingModelPhysicallyBased 着色模型可生成各种逼真的着色效果,同时仅需要三个基本属性(
Diffuse
、Metalness
和Roughness
)。 - 由于 PBR 着色与基于环境的照明配合使用效果最佳,因此请使用
LightingEnvironment
属性将基于图像的照明分配到整个场景。 - 使用
IESProfileURL
属性导入真实世界的灯具,这些灯具根据强度(以流明为单位)和色温(以开氏度为单位)等真实值定义照明。 - PBR 和 HDR 相机功能都提供了比传统渲染技术更好的结果,因此,SceneKit 现在在线性颜色空间中执行所有颜色计算(在宽颜色设备显示器上使用 P3 色域)。
- SceneKit 现在通过读取颜色配置文件信息来匹配所有颜色。
- SceneKit 解释所有着色器类型的线性 RGB 颜色空间中的颜色分量值。
- 通过在应用的
Info.plist
中指定SCNDisableLinearSpaceRendering
和SCNDisableWideGamut
键,可以禁用线性颜色空间渲染和宽色。 - 生成任意多边形灵长类动物(从文件加载或以编程方式生成)以使用新的 SCNGeometryPrimitiveTypePolygon 类指定几何形状。
- 由于 SceneKit 会读取并调整纹理图像中的颜色配置文件信息,因此请对所有图像使用资产目录以确保提供此信息。
SpriteKit 增强
iOS 10 中的 SpriteKit 框架进行了以下增强:
- 自定义着色器可以提供属性 (
SKAttribute
),使用该着色器的每个节点可以通过提供属性值 (SKAttributeValue
) 来单独配置这些属性。 - 图块现在支持使用
SKTileMapMode
、SKTileGroup
、SKTileGroupRule
和SKTileSet
类的 2D、2.5D 和横向卷轴游戏的方形、六边形和等距图块形状。 - 使用新的
SKWarpGeometry
类拉伸或扭曲 SKSpriteNode 或 SKEffectNode 渲染。 新的 SKAction 类可用于制作扭曲效果之间的过渡动画。 - SKView 类提供了多种新方法,可以对场景的渲染时间和方式进行精细控制。
ScrollView 增强
iOS 10.3 中的 ScrollView 控件进行了以下增强:
UIScrollView
现在包含IndexDisplayMode
属性,用于控制当用户滚动为以下内容的UIScrollViewIndexDisplayMode
时索引的显示方式:Automatic
- 索引显示由操作系统控制。AlwaysHidden
- 索引显示始终隐藏。
UIKit 增强
iOS 10 中的 UIKit 框架进行了以下增强:
- 新的 UIPasteboard API 提供了新选项(例如生命周期限制),并将自动声明常见类类型的兼容内容类型。
- 添加了新的完全交互式、基于对象、可中断的动画支持,并且可以链接到手势。 请参阅 Apple 的 UIViewAnimating 协议参考、UIViewPropertyAnimator 类参考、UITimingCurveProvider 协议参考、UICubicTimingParameters 类参考和 UISpringTimingParameter 类参考了解详细信息。
- 新的
UIPreviewInteraction
和UIPreviewInteractionDelegate
允许开发人员应用为查看和弹出操作提供自定义界面。 - 新的
UIAccessibilityCustomRotor
类允许应用为 Voice Over 等辅助技术提供自定义的、特定于上下文的功能。 - 使用
UIAccessibilityIsAssistiveTouchRunning
和UIAccessibilityAssistiveTouchStatusDidChangeNotification
符号确定 AssistiveTouch 是否已启用。 - 使用
UIAccessibilityHearingDevicePairedEar
和UIAccessibilityHearingDevicePairedEarDidChangeNotification
符号获取任何配对的 MFi 助听器的状态。 - 为了支持标签、文本字段和文本框中的动态类型,请使用
UIFont
类的新PreferredFontForTextStyle
方法。 - 若要确定当设备的
UIContentSizeCategory
更改时元素是否应更新其字体,请使用UIContentSizeCategoryAdjusting
委托的AdjustsFontForContentSizeCategory
属性。 UIApplication
类的OpenURL
方法是异步调用的,现在支持在打开操作完成后调用的完成处理程序。- 使用新的
UICloudSharingController
和UICloudSharingControllerDelegate
类启动 CloudKit 共享并修改其属性。 - 通过新的
UICollectionViewDataSourcePrefetching
委托,利用预提取的单元格来改善UICollectionViews
的滚动体验。 - 开发人员现在可以控制标签栏项的徽章外观(例如文本和背景色)。
- 现在,所有滚动视图和滚动视图子类(例如
UICollectionView
)都支持刷新控件。
WebKit 增强
iOS 10 中的 WebKit 框架进行了以下增强:
WKWebView
类中添加了速览和弹跳支持。 使用ShouldPreviewElement
方法确定给定的 Web 视图是否应显示预览。