iOS 10 额外的 Framework 改动(部分)
AVFoundation 摄像头捕捉
AVFoundation framework里的多媒体捕捉子系统里包含了一些重要改动。
1)双摄像头和设备发现
7plus 带有双摄像头,一个广角相机和长焦相机合并作为一个单一采集设备一起工作。在 iOS10和以后的版本中,你要使用以下类AVCaptureDevice中的方法来使用采集设备:调用defaultDeviceWithDeviceType:mediaType:position:方法(传device type为AVCaptureDeviceTypeBuiltInDuoCamera来使用双摄像头,如果设备没有双摄像头则方法返回nil,同样的,你可以传device type为AVCaptureDeviceTypeBuiltInWideAngleCamera来使用默认的后置摄像头)
创建一个AVCaptureDeviceDiscoverySession对象,传你要用于捕捉的设备属性,枚举对象自身的devices列表,从中选择一个设备来用于你的捕捉回话。
注意:类AVCaptureDevice的方法devices 和 devicesWithMediaType:在iOS中已经废弃掉了,并且不提供进入双摄像头和长焦相机相关的方法。
当你用双摄像头时,RAW capture和大多数的手工控制将不可用。要想使用这些功能,请特意选择广角设备捕捉和长焦设备捕捉中的一种。
2)新的照片拍照API
新的 AVCapturePhotoOutput 类为所有的摄影工作流程提供了一个统一的传递途径,实现更复杂的控制和整个捕获过程监控,并且支持如Live Photos 和 RAW format capture等新功能。你应该过渡到AVCapturePhotoOutput而不是AVCaptureStillImageOutput,AVCaptureStillImageOutput,是iOS10不推荐的(废弃的)
3)广色域
摄像头捕捉管道可以在支持的设备上捕捉广色域色彩格式,默认情况下,当你的采集流程适合时,AVCaptureSession会自动配置为广色域捕捉
AVFoundation Media
媒体播放和编辑子系统在AVFoundation framework有如下增强:
你不在需要为AVPlayerItem实现不同的行为,而是取决于内容是电影文件还是HLS内容。在iOS10或者以后版本中,你只需要设置rate属性,AVFoundation就会帮你判断何时已经缓存足够的内容让你能不失速的播放。
AVPlayerLooper类可以让你在回放的过程中更容易的循环不妨特定部分。
可以使用AVAssetDownloadURLSession类来下载一个包含HLS流的asset到设备上,并播放这个asset。当雨FairPlay流一起使用时,你可以下载一个加密的HLS流并在稍后的时间安全的播放HLS流。
UIKit
UIKit framework 有很多增强,比如:
新的基于对象的,完全互动和可中断的动画支持(注意动画可以中断了),可以让你保持你的动画控制并且通过手势交互链接这些动画。你可以在UIViewAnimating Protocol Reference, UIViewPropertyAnimator Class Reference, UITimingCurveProvider Protocol Reference, UICubicTimingParameters Class Reference, 和 UISpringTimingParameters Class Reference.中查看这些变化。
新的UIPreviewInteraction类和UIPreviewInteractionDelegate 接口可以让你提供有peek和pop 体验的自定义用户界面。
新的UIAccessibilityCustomRotor类和与其相关的类,帮助你提供的自定义的上下文特定功能的辅助技术,就像VoiceOver的可以公开给用户的一样。例如,您可以创建一个自定义的转子,可以让用户的VoiceOver通过反复返回下一个拼错单词的文本范围找到一个文档中的拼写错误的单词
新的UIPasteboard API自动为普通的实例声明兼容的内容类型和能限制pasteboard上的对象的的生命周期的新的选项。
UIPasteboard上新的选项
新的UIFont方法:preferredFontForTextStyle:compatibleWithTraitCollection:增加了在labels, text fields,和其他文本域中的动态类型的支持。
UIContentSizeCategoryAdjusting接口提供了属性adjustsFontForContentSizeCategory,该属性能用来确定当设备的UIContentSizeCategory变化时是否采用的元素应该更新其字体
提供对tabbar item上的角标(badge)额外的控制,如background color 和 text attributes的修改.
在scrollview和scrollview子类中增加了refresh control
新的UIApplication 方法openURL:options:completionHandler:,该方法是异步执行,并且回调方法在主线程中执行。(该方法用来替换openURL:)
UICollectionView的增强和新的UICollectionViewDataSourcePrefetching 的接口,iOS10中你可以通过自动预取cells来提升滑动时的体验
WebKit
你可以使用WKWebView中的webView:shouldPreviewElement: 方法来判断是否制定的web view可以加载预览(preview)