由于公司项目的一个新模块需要做一些社交之类的需求,类似于简单的朋友圈,可以支持用户发表纯文字内容、带有照片的配文。这时需要从系统相册中选择所需要的图片进行发表,开始这个需求之前网上找过一些轮子,但是都不太满意,功能不完善、细节处理的不够,包括只有选择照片,不支持多选,无最大照片选择数的根据需求自定义,选择之后不能进行删除、没有对其压缩等等。所以就有了下面这款新的轮子了,虽然某种意义上也是重复造轮子了,但为了更方便、用起来更舒心,我想还是有必要的,有需要的朋友可以尝试在您的项目中引用,你需要写的可能不超过三行代码。
KBPhotoSelector
简单介绍一下这款工具的优势:
- 支持照片多选,真正意义上的多选,可根据需求自定义选择数量
- 支持大图预览,预览的过程中可进行筛选
- 支持文件夹列表分类,便于进行分类选择,基于苹果iOS8推出的PhotoKit框架,以后可能会增加新特性
- 支持删除提供了专门删除的页面,这需要基于开发者自己模块具体操作,框架本身我已提供索引
- 支持回到分类页面,进行重新选择照片分类时,记录之前的所有选择,不会再需要重新手动选择一遍(目前这点我看了微信的照片选择器,并没有这么智能)
项目地址:
https://github.com/Bofearless/KBPhotoSelector.git
示例介绍具体用法:
框架已发布到cocoapods上,cocoapods是iOS上一款非常流行且强大的开源库管理工具,如果有不了解的同学,可以先去了解下,应该能极大的提高你的开发效率。这里友情链接一篇对cocoapods介绍较全面的文章,以供了解。
两种安装方式(推荐使用pods):
1、podfile文件: pod ‘KBPhotoSelector’
2、github下载后解压,拖入项目合适位置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #import <KBPhotoSelector/KBPhotoSelector.h> #import <KBPhotoSelector/KBBasePopView1.h>
KBPhotoSelector *photoSelector = [[KBPhotoSelector alloc]init]; photoSelector.maxSelectCount = count; KBBasePopView1 *baseView = [KBBasePopView1 popupWithView:photoSelector]; [photoSelector showPreviewPhotoWithSender:self animate:YES lastSelectPhotoModels:nil completion:^(NSArray<UIImage *> * _Nonnull selectPhotos, NSArray<KBSelectPhotoModel *> * _Nonnull selectPhotoModels) { [baseView hide];
NSLog(@"selectPhotos is %@",selectPhotos); }];
[photoSelector setCanceBlock:^{ [baseView hide]; }]; [baseView show];
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
#import <KBPhotoSelector/KBPhotoBrowserDeleteController.h>
self.postsView.didSelectedItemBlock = ^(NSMutableArray *arr, NSInteger index) { KBPhotoBrowserDeleteController *nextVc = [[KBPhotoBrowserDeleteController alloc]init]; nextVc.currentSelectedImgeArr = arr; nextVc.currentIndex = index;
[nextVc setCompeletionDeleteBlock:^(NSMutableArray<UIImage *> *callBackArr) { [weakSelf.postsView setUpdateDataSource:callBackArr]; }]; [weakSelf.navigationController pushViewController:nextVc animated:YES]; };
|
好了,以上就是基本的使用示例了,集成起来很简单,实现几个暴露的API方法就能满足你的所有需求。上面是代码的示范,之后我会提供一下具体的截图样例,上传以供参考。