记录每天成长的点点滴滴~~~
条件,xcode7以后,ios9,对swift有一定了解
内容:多任务处理
三大特性:
1.pip---悬浮视频播放
2.slideOver---滑动覆盖分屏,切换任务
3.slideView---分屏,呈现两个并行的应用
首先给大家介绍一下,pip,是三个特性中相对复杂的,全称AVPictureInPictureController
创建流程:
步骤一:首先自定义view,需要导入,AVKit、AVFoundation库,重写layerClass,具体看截图
步骤二:创建播放器(播放使用的是AVPlayer)
1.使用懒加载,创建player并添加kvo事件,监听播放状态
2.找到本地视频并调用自定义的player,进行播放.
步骤三:实现pip--AVPictureInPictureController
1.调用observeValueForKeyPath,进行判断处理
2.通过keyPath判断,创建status,保存AVPlayerItemStatus状态
3.最后在判断status是否与AVPlayerItemStatus.ReadyToPlay,状态相同
4.创建AVPictureInPictureController,并把自定义AVPlayerLayer加载到界面中,就大功告成了
请注意:iphone,目前是不支持该功能的,可以在ipad上运行.
1.如果是真机,运行程序后,点击home键,退到后台,可以看效果
2.如果是在模拟器上,点击command+shift+h,到后台就可以了
3.到后台之后,视频会继续播放,你也可以用鼠标\手进行拖动,不过只能在四个角
效果图附上:
模拟器中
后台中
拖动,不同的位置
点击视频,可以对视频进行处理
最后一张效果图,个人觉得,可能是最有用的用处了,你可以边看视频,边干其他的事情,图中,边播放视频,另一边打开了Safari
最后总结一下:
pip并不是支持所有的视频
1.支持的有
AVKit
WebKit
AVFoundation
2.不支持的
MPMoviePlayerViewController
MPMoviePlayerController
pip的一些属性、代理等
1.控制
public func startPictureInPicture()
public func stopPictureInPicture()
2.代理 AVPictureInPictureControllerDelegate
func pictureInPictureControllerWillStartPictureInPicture(pictureInPictureController:AVPictureInPictureController) {
print("will start")
}
func pictureInPictureControllerDidStartPictureInPicture(pictureInPictureController:AVPictureInPictureController) {
print("will stop")
}
func pictureInPictureController(pictureInPictureController:AVPictureInPictureController, failedToStartPictureInPictureWithError error:NSError) {
print("will fail")
}
3.pip属性
public var pictureInPicturePossible: Bool { get }
public var pictureInPictureActive: Bool { get }
今天就这样,写的不好,大家别喷,希望大家早日成为大神!!!
附上:源码,请点击下载
Ios9-Multitasking-多任务处理一(悬浮视频) - 代码库 - CocoaChina_让移动开发更简单