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的教程到此结束~
如果有什么问题,麻烦小伙伴儿们评论或者在首页添加微信联系颜华,感谢~
前言hihi,勇敢的小伙伴儿们大家好啊~忙里偷闲,学习一点新东西所以来给大家分享来了~这次学习的东西非常简单,展示LivePhoto的功能~为什么要学这个,哈哈哈,当初LivePhoto第一次出现的时候,我没有学它,后来微博出现了,我不以为意。直到抖音上线了带火了LivePhoto的生成功能,我才对这个起了兴趣,我自己也生成了一些LivePhoto作为我的锁屏背景,甚是有趣!但是!搜索生成Live...
来自:http://www.devdiv.com/home.php?mod=space&uid=8639&do=blog&id=4104
iphone ipad 开发:结合UIImageView实现图片的移动和缩放
因为种种原因,需要在iphone应用中实现图片查看功能,由于iphone屏幕支持多点触摸,于是是想到用“手势”来实现图片的
实时缩放和移动。借鉴无所...
-(void)setupImageView{
//初始化一个imageView
UIImageView * testImageView = [[UIImageView alloc] initWithFrame:self.view.frame];
//设置imageView的图片
testImageView...
支持长按保存图片到相册,支持横屏查看图片,查看长图。点击图片时的放大、缩小都做了动画效果。
整个模块以CollectionView控件来完成 只需要在你展示的地方 addSubview 即可 无需管理控制器,方便简洁可以直接修改,无需深
入代码来做修改。
本篇博文将详细介绍Photos.framework在日常开发中常用的一些api对相册的各种使用方法。
自己最近抽空写了一个相册多选框架,用到对一些对相册相关的操作,使用的便是iOS8.0之后,apple推出的新框架 Photos.framework
github地址:https://github.com/longitachi/ZLPhotoBrowser ,会持续更新
问题背景描述:
在stroyBoard拖入PHLivePhotoView控件,在控制器中设置输入口引用
@IBOutlet weak var livePhotoView : PHLivePhotoView!
在代码中为livePhotoView设置展示的livePhoto,模拟器运行正常,真机崩溃,
崩溃信息:
-[UIView setLivePhoto:]: unrecognized selector sent to instance 0x1019b3370
处理过程:
1.控制台打印livePhotoV