前言
hihi,勇敢的小伙伴儿们大家好啊~忙里偷闲,学习一点新东西所以来给大家分享来了~
这次学习的东西非常简单,展示LivePhoto的功能~
为什么要学这个,哈哈哈,当初LivePhoto第一次出现的时候,我没有学它,后来微博出现了,我不以为意。直到抖音上线了带火了LivePhoto的生成功能,我才对这个起了兴趣,我自己也生成了一些LivePhoto作为我的锁屏背景,甚是有趣!但是!搜索生成LivePhoto的过程中,我没找到想找到的,我只是看到了展示LivePhoto的功能,就是微博上能够展示LivePhoto的效果,所以先把这个学了吧,由浅入深,很多东西就会变简单~
正文
Demo传送门:展示LivePhoto的Demo
首先,这个功能很简单很简单,主要的核心内容就是用PHLivePhotoView吧LivePhoto展示出来,这个PHLivePhotoView是官方给我们的一个类,需要导入Photos和PhotosUI的框架,然后PHLivePhotoView和UIImageView是一样的操作,只是UIImageView有的是image属性,PHLivePhotoView是LivePhoto的属性。PHLivePhotoView还提供了两种LivePhoto的动态效果。一种是持续数秒,我亲测效果就是自动播放几秒,还有一种是全部循环展示,这种是自动播放全部内容的效果。这里我后面再说,大家了解就好。

话不多说,上代码。
准备工作
1.准备的真机是iPhone 6s及以上机型测试,6s以下机型不支持LivePhoto。
2.为了适配iOS10,请先在info.plist中设置隐私权限Privacy - Photo Library Usage Description.
我们需要调用UIImagePickerController获取手机相册中的Photo和LivePhoto展示。
3.添加MobileCoreServices框架,后面设置UIImagePickerController的mediaTypes需要。
4.添加Photos和PhotosUI框架,使用PHLivePhotoView需要。
正式开始
5.调用UIImagePickerController,设置代理时遵守UIImagePickerControllerDelegate和UINavigationControllerDelegate协议。
UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
ipc.delegate = self;
NSArray *mediaTypes = @[(NSString *)kUTTypeImage,(NSString *)kUTTypeLivePhoto];
ipc.mediaTypes = mediaTypes;
[self presentViewController:ipc animated:YES completion:nil];6.代理方法
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info {
[self dismissViewControllerAnimated:YES completion:^{
PHLivePhoto *photo = [info objectForKey:UIImagePickerControllerLivePhoto];
if (photo) { //LivePhoto
for (UIView * view in self.view.subviews) {
if ([view isKindOfClass:[UIImageView class]] || [view isKindOfClass:[PHLivePhotoView class]]) {
[view removeFromSuperview];
}
}
PHLivePhotoView *photoView = [[PHLivePhotoView alloc] initWithFrame:CGRectMake(0, 50, self.view.frame.size.width, self.view.frame.size.height - 60)];
photoView.livePhoto = photo;
photoView.contentMode = UIViewContentModeScaleAspectFit;
[self.view addSubview:photoView];
//持续数秒效果
// [photoView startPlaybackWithStyle:PHLivePhotoViewPlaybackStyleHint];
//全部循环展示效果
// [photoView startPlaybackWithStyle:PHLivePhotoViewPlaybackStyleFull];
//停止动画
//[photoView stopPlayback];
} else { //普通照片
for (UIView * view in self.view.subviews) {
if ([view isKindOfClass:[PHLivePhotoView class]] || [view isKindOfClass:[UIImageView class]]) {
[view removeFromSuperview];
}
}
UIImageView *photoView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 50, self.view.frame.size.width, self.view.frame.size.height - 60)];
photoView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
photoView.contentMode = UIViewContentModeScaleAspectFit;
[self.view addSubview:photoView];
}
}];
}其中注释掉了持续数秒和全部循环展示效果,小伙伴儿们可自行体验其效果~
好了,展示LivePhoto的教程到此结束~
















