ios多图选择,高仿微信发朋友圈的功能
主要模仿微信的发朋友圈多图选择,修改图片等功能 主要实现功能如下:
1, 照片选取预览,有相册UI 预览UI 详情UI 可以创建相册等
2, 预览UI 详情UI 可以通过3DTouch的方式进行查看
3, 可以删除照片 收藏照片
4, 可以通过3DTouch或者点击播放 Video gif livephoto等资源
5, 预览详情支持 单击 双击 缩合等手势处理照片查看
6, 支持国际化配置
7, 新增视频处理包括,裁剪,涂鸦,水印,贴图等等
git下载地址: https://github.com/wangjinshan/IJSPhotoSDK
1,导入头文件
//必须
#import "IJSImagePickerController.h"
// 可选
#import "IJSMapViewModel.h"
#import <IJSFoundation/IJSFoundation.h>
#import <Photos/Photos.h>
2,签订协议
<IJSImagePickerControllerDelegate>
3,获取用户选择的图片等资源可以通过 block 也可以通过代理方法
如下:
// 1 block 方法
- (IBAction)_selectImageActin:(id)sender
{
__weak typeof(self) weakSelf = self;
IJSImagePickerController *imageVc = [[IJSImagePickerController alloc] initWithMaxImagesCount:3 delegate:self];
// 可选写不写
imageVc.minImagesCount = 1; // 图片最小选择要求,可以不设置
imageVc.minVideoCut = 4; //视频最小裁剪尺寸 可选(默认是4秒)
//可选 可以通过代理的回调去获取数据
imageVc.didFinishUserPickingImageHandle = ^(NSArray<UIImage *> *photos, NSArray *avPlayers, NSArray *assets, NSArray<NSDictionary *> *infos, BOOL isSelectOriginalPhoto, IJSPExportSourceType sourceType) {
if (sourceType == IJSPImageType)
{
weakSelf.imageArr = [NSMutableArray arrayWithArray:photos];
[weakSelf.myTableview reloadData];
}
else
{
NSLog(@"%@",avPlayers);
}
};
/*
1,贴图资源可以不传,不穿则读取SDK内存的资源,可以找到 JSPhotoSDK.bundle Expression文件 把自己的资源放到里面不需要管文件名字sdk自己会便利
2, 如果是外部动态添加资源选择下面添加的方式 需要传 IJSMapViewModel 的数组
*/
// NSString *bundlePath = [[NSBundle mainBundle]pathForResource:@"JSPhotoSDK" ofType:@"bundle"];
// NSString *filePath =[bundlePath stringByAppendingString:@"/Expression"];
// [IJSFFilesManager ergodicFilesFromFolderPath:filePath completeHandler:^(NSInteger fileCount, NSInteger fileSzie, NSMutableArray *filePath) {
// IJSMapViewModel *model =[[IJSMapViewModel alloc]initWithImageDataModel:filePath];
// [self.mapDataArr addObject:model];
// imageVc.mapImageArr = self.mapDataArr;
// }];
[self presentViewController:imageVc animated:YES completion:nil];
}
// 不想在block中做,可以选择代理方法
#pragma mark - 代理方法
-(void)imagePickerController:(IJSImagePickerController *)picker isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto didFinishPickingPhotos:(NSArray<UIImage *> *)photos assets:(NSArray *)assets infos:(NSArray<NSDictionary *> *)infos avPlayers:(NSArray *)avPlayers sourceType:(IJSPExportSourceType)sourceType
{
if (sourceType == IJSPVideoType)
{
IJSVideoTestController *testVc =[[IJSVideoTestController alloc] init];
AVAsset *avaseet = [AVAsset assetWithURL:avPlayers.firstObject];
testVc.avasset = avaseet;
[self presentViewController:testVc animated:YES completion:nil];
}
}
大功告成就是这么简单
额外注意点:
1, 国际化:
Xcode--PROJECT---info --- Localizations---Chinese(Simplified)
2, 在项目的plist文件中添加两个字段
Privacy - Photo Library Usage Description ----允许应用访问相机权限
pod 'IJSPhotoSDK'
项目中的头文件
#import <IJSImagePickerController.h>
最低版本支持是 0.1.0开始 集成步骤和手动拖入的集成一样不再赘述 集成已经完成
目录:
SDK: 1, IJSPhotoSDK主要存放项目文件和项目资源,
里面 IJSPhotoSDKFiles 就是项目文件
Support 是UI资源
2, Required 存放必须的两个依赖库
IJSFoundation 主要是公共库的方法
IJSUExtension 是开源 IJSUI的扩展
// 控制器
1, IJSImagePickerController.h 导航栏控制器,通过改变该控制器的一些属性来达到你想要的效果,开放的外部接口
里面的所有属性都是用来控制选取属性的 比如可以设置 maxImagesCount = 9 最大选取个数等
2, IJSAlbumPickerController 相册列表控制器
3, IJSPhotoPickerController 图片选择控制器,默认是4列显示
4 , IJSPhotoPreviewController 照片预览控制器
5, IJS3DTouchController 3DTouch控制器
6, IJSImageManager 照片管理类 所有的照片处理api都在里面可以直接调用
7, IJSPImageEditManager 图片处理管理器 在开发中......
// 资源
1, IJSAlbumModel 相册模型
2, IJSAssetModel 照片模型
1, 暂时没有适配 iphone x 2, 图片裁剪少了一次国际化 3, 性能还需要再优化