HXPhotoPickeriOS 图片/视频选择器
HXPhotoPicker 是一个 IOS 图片/视频选择器 - 支持 LivePhoto、GIF 图片选择、3DTouch 预览、在线下载 iCloud 上的资源、编辑图片/视频、浏览网络图片等功能
特性 - Features
- 查看、选择GIF图片
- 照片、视频可同时多选/原图
- 3DTouch预览照片
- 长按拖动改变顺序
- 自定义相机拍照、录制视频
- 自定义转场动画
- 查看、选择LivePhoto iOS9.1以上才有用
- 浏览网络图片、网络视频
- 仿微信编辑图片功能
- 自定义裁剪视频时长
- 传入本地图片、视频
- 在线下载iCloud上的资源
- 两种相册展现方式(列表、弹窗)
- 支持Cell上添加
- 支持草稿功能
- 同一界面多个不同选择器
- 支持暗黑模式
- 支持横向布局
- 支持Xib和Masonry布局
- 支持自定义item的大小
- 支持滑动手势选择
要求 - Requirements
- iOS8及以上系统可使用. ARC环境. - iOS 8 or later. Requires ARC
- 访问相册和相机需要配置四个info.plist文件
- Privacy - Photo Library Usage Description 和 Privacy - Camera Usage Description 以及 Privacy - Microphone Usage Description
- Privacy - Location When In Use Usage Description 使用相机拍照时会获取位置信息
- 相机拍照功能请使用真机调试
应用示例 - Examples
跳转相册选择照片
// 懒加载 照片管理类 - (HXPhotoManager *)manager { if (!_manager) { _manager = [[HXPhotoManager alloc] initWithType:HXPhotoManagerSelectedTypePhotoAndVideo]; } return _manager; } // 方法一: HXWeakSelf [self hx_presentSelectPhotoControllerWithManager:self.manager didDone:^(NSArray<HXPhotoModel *> *allList, NSArray<HXPhotoModel *> *photoList, NSArray<HXPhotoModel *> *videoList, BOOL isOriginal, UIViewController *viewController, HXPhotoManager *manager) { weakSelf.total.text = [NSString stringWithFormat:@"总数量:%ld ( 照片:%ld 视频:%ld )",allList.count, photoList.count, videoList.count]; weakSelf.original.text = isOriginal ? @"YES" : @"NO"; NSSLog(@"block - all - %@",allList); NSSLog(@"block - photo - %@",photoList); NSSLog(@"block - video - %@",videoList); } cancel:^(UIViewController *viewController, HXPhotoManager *manager) { NSSLog(@"block - 取消了"); }]; // 方法二: // 照片选择控制器 HXCustomNavigationController *nav = [[HXCustomNavigationController alloc] initWithManager:self.manager delegate:self]; [self presentViewController:nav animated:YES completion:nil]; // 通过 HXCustomNavigationControllerDelegate 代理返回选择的图片以及视频 /** 点击完成按钮 @param photoNavigationViewController self @param allList 已选的所有列表(包含照片、视频) @param photoList 已选的照片列表 @param videoList 已选的视频列表 @param original 是否原图 */ - (void)photoNavigationViewController:(HXCustomNavigationController *)photoNavigationViewController didDoneAllList:(NSArray<HXPhotoModel *> *)allList photos:(NSArray<HXPhotoModel *> *)photoList videos:(NSArray<HXPhotoModel *> *)videoList original:(BOOL)original; /** 点击取消 @param photoNavigationViewController self */ - (void)photoNavigationViewControllerDidCancel:(HXCustomNavigationController *)photoNavigationViewController;
单独选择照片/适配编辑功能
// 单独使用照片编辑功能 HXPhotoModel *photoModel = [HXPhotoModel photoModelWithImage:[UIImage imageNamed:@"1"]]; [self hx_presentPhotoEditViewControllerWithManager:self.manager photoModel:photoModel delegate:nil done:^(HXPhotoModel *beforeModel, HXPhotoModel *afterModel, HXPhotoEditViewController *viewController) { // beforeModel编辑之前、afterModel编辑之后 weakSelf.imageView.image = afterModel.thumbPhoto; } cancel:^(HXPhotoEditViewController *viewController) { // 取消 }]; // 单独使用仿微信编辑功能 [self hx_presentWxPhotoEditViewControllerWithConfiguration:self.manager.configuration.photoEditConfigur photoModel:photoModel delegate:nil finish:^(HXPhotoEdit * _Nonnull photoEdit, HXPhotoModel * _Nonnull photoModel, HX_PhotoEditViewController * _Nonnull viewController) { if (photoEdit) { // 有编辑过 weakSelf.imageView.image = photoEdit.editPreviewImage; }else { // 为空则未进行编辑 weakSelf.imageView.image = photoModel.thumbPhoto; } // 记录下当前编辑的记录,再次编辑可在上一次基础上进行编辑 weakSelf.photoEdit = photoEdit; } cancel:^(HX_PhotoEditViewController * _Nonnull viewController) { // 取消 }]; // 单独使用视频编辑功能 NSURL *url = [[NSBundle mainBundle] URLForResource:@"QQ空间视频_20180301091047" withExtension:@"mp4"]; HXPhotoModel *videoModel = [HXPhotoModel photoModelWithVideoURL:url]; [self hx_presentVideoEditViewControllerWithManager:self.manager videoModel:videoModel delegate:nil done:^(HXPhotoModel *beforeModel, HXPhotoModel *afterModel, HXVideoEditViewController *viewController) { // beforeModel编辑之前、afterModel编辑之后 weakSelf.imageView.image = afterModel.thumbPhoto; } cancel:^(HXVideoEditViewController *viewController) { // 取消 }];
评论