最近需要做壁纸相关的东西,一开始使用的是静态壁纸,不过后来说准备做动态壁纸,也就是苹果上的LivePhoto。查了一些资料,LivePhoto包含两个部分,一部分是一张jpg图片,一部分则是一个mov视频。好像jpg图片还需要是mov视频中某一帧,之前做保存的时候,图片和视频不想关,并没有保存成功Live Photo。
在网上查了很久,发现并没有直接说动态壁纸的展示和下载,基本上说的都是从图库中进行获取并展示。不过这种很明显不是符合我的需求,没办法,只能自己进行尝试了。
首先,解决的还是保存到手机相册的问题。
因为Live Photo是由jpg和mov组成的,所以在保存到相册的时候需要一起进行保存。而且,在相册中,它们两个的名字是相同的,只是后缀不同,比如 IMG_100.jpg 和 IMG_100.mov,而且,需要注意它们后缀名的大小写问题。
接下来就是代码了,引入Photo框架,对Live Photo进行保存。
保存livephoto到手机相册然后打开手机相册,就能发现,在手机相册中,已经包含了Live Photo照片。
然后,就是展示Live Photo照片了。当然,这个照片不是从本地相册中进行获取,从本地相册获取,网上已经有很多人给出了方法,这里就不说这种了。
导入PhotoUI框架,在请求资源后,将获取到的live Photo对象赋值给PHLivePhotoView的livePhoto对象,然后就能正常展示出来了。
请求到Live Photo并展示出来注意:resultHandler会回调多次。
对于Live Photo的播放和停止,PHLivePhotoView有对应的方法:
- (void)startPlaybackWithStyle:(PHLivePhotoViewPlaybackStyle)playbackStyle;
- (void)stopPlayback;
还有一个代理:PHLivePhotoViewDelegate,包含两个代理方法:
- (void)livePhotoView:(PHLivePhotoView *)livePhotoView willBeginPlaybackWithStyle:(PHLivePhotoViewPlaybackStyle)playbackStyle;
- (void)livePhotoView:(PHLivePhotoView *)livePhotoView didEndPlaybackWithStyle:(PHLivePhotoViewPlaybackStyle)playbackStyle;
具体想要更深入了解研究的,可以多多探究,也欢迎大家一起探讨。
网友评论