/ZLPhotoBrowser

方便易用的相册多选框架,支持预览/相册内拍照及录视频、拖拽/滑动选择,3DTouch预览,编辑裁剪图片/视频,导出视频(可添加水印,粒子特效,视频转码);支持多语言国际化(中文简/繁,英语,日语,可手动切换);在线下载iCloud端图片;支持预览网络及本地图片/视频

Primary LanguageObjective-CMIT LicenseMIT

image

Version Carthage compatible  License Platform Language


运行Demo

下载完Demo请执行carthage update --platform iOS (运行时候请选择 Example target)SDWebImage.frameworkSDWebImageMapKit.framework 路径如果报错的话,关掉项目,重新打开即可

框架整体介绍

功能介绍

  • 支持横竖屏
  • 预览快速选择、可设置预览最大数 (支持拖拽选择)
  • 直接进入相册选择 (支持滑动多选)
  • 编辑图片 (可自定义裁剪比例)
  • 编辑视频
  • 查看、选择gif、LivePhoto(iOS9.0)、video
  • 3D Touch预览image、gif、LivePhoto、video
  • 混合选择image、gif、livePhoto、video
  • 在线下载iCloud照片
  • 控制选择video最大时长
  • 多语言国际化 (中文简/繁、英文、日文,可设置跟随系统和自行切换,可自定义多语言提示)
  • 相册内拍照按钮实时显示镜头捕捉画面
  • 已选择图片遮罩层标记
  • 已选择图片index
  • 预览已选择照片
  • 预览网络及本地 图片/视频 (图片支持长按保存至相册)
  • 相册内图片自定义圆角弧度
  • 自定义升序降序排列
  • 支持点击拍照及长按录制视频 (仿微信)
  • 开发者可自定义资源图片
  • 支持导出视频 (可指定导出视频尺寸、添加图片水印、粒子特效 ps:文字水印暂不支持)
  • 初步适配iOS13

Feature

如果您在使用中有好的需求及建议,或者遇到什么bug,欢迎随时issue,我会及时的回复

更新日志

更多更新日志

● 3.1.4: 添加自定义相机分辨率(320*240, 960*540); 修正拍照后图片方向; 编辑视频最小允许编辑5s; 添加相机是否可用检测; 修正部分多语言错误的问题; 
● 3.1.3: 修改曝光模式; 拍照界面显示 "轻触拍照,按住摄像" 提示; 增加直接调用编辑图片api; 已知bug fixed; 
● 3.1.2: SDWebImage 不在指定依赖版本号;
● 3.1.1: 优化进入相册速度及从相册列表进入选择界面流程; 选择相片时候添加progress; 解决原图大小显示错误的bug; 已知bug fixed;
● 3.1.0: 初步适配iOS13,解决present不是fullScreen的bug; 添加 Swift Example Target;
● 3.0.7: 网络视频播放添加进度条; SDWebImage依赖升级5.1.0以上版本; 已知bug修复;
● 3.0.6: 添加选中图片显示index功能; 新增(及修改)部分颜色api,方便修改框架内部颜色; 修改框架默认风格为微信的风格; 压缩图片资源;
● 3.0.5: 预览快速选择界面文字颜色支持自定义; 编辑界面按钮增大; 解决录制视频超过10s没有声音的bug;
● 3.0.4: 添加视频选择最大最小个数限制; 解决网络gif图片无法播放的bug; fix已知bug;
● 3.0.3: 依赖库SDWebImage升级为5.0.2以上; 解决图片浏览器关闭时取消所有sd图片请求的bug; 支持直接调用相机;
● 3.0.0: 压缩bundle内图片; 支持直接选择iCloud照片,并添加解析图片超时时间属性;
● 3.0.0: 支持carthage; 去除GPUImage滤镜;
● 2.7.8: 添加iCloud图片加载进度条,支持iCloud视频播放;
● 2.7.6: 预览大图界面支持precent情况下的下拉返回;
● 2.7.5: 编辑图片支持自定义工具类型; bug fixed;
● 2.7.4: 横滑大图界面添加下拉返回; 不允许录制视频时候不请求麦克风权限;

框架支持

最低支持:iOS 8.0

IDE:Xcode 9.0 及以上版本 (由于适配iPhone X使用iOS11api,所以请使用Xcode 9.0及以上版本)

使用方法

第一步:

  • Manually
    • 1.直接把PhotoBrowser文件夹拖入到您的工程中
    • 2.导入 Photos.framework及PhotosUI.framework
    • 3.项目依赖 SDWebImageGPUImage 所以需要导入这两个框架
    • 4.导入 "ZLPhotoBrowser.h"
  • Cocoapods
    • 1.在Podfile 中添加 pod 'ZLPhotoBrowser'
    • 2.执行 pod setup
    • 3.执行 pod installpod update
    • 4.导入 <ZLPhotoBrowser/ZLPhotoBrowser.h>
  • Carthage
    • 1.在Cartfile 中添加 github "longitachi/ZLPhotoBrowser"
    • 2.执行 carthage update
    • 3.导入 <ZLPhotoBrowser/ZLPhotoBrowser.h>

第二步:

  • 在项目plist配置文件中添加如下键值对
//如果不添加该键值对,则不支持多语言,相册名称默认为英文
Localized resources can be mixed YES
//或者右键plist文件Open As->Source Code 添加
<key>CFBundleAllowMixedLocalizations</key>
<true/>

//相册使用权限描述
Privacy - Photo Library Usage Description
//相机使用权限描述
Privacy - Camera Usage Description
//麦克风使用权限描述
Privacy - Microphone Usage Description

代码中调用

#import <ZLPhotoBrowser/ZLPhotoBrowser.h>
    
ZLPhotoActionSheet *ac = [[ZLPhotoActionSheet alloc] init];

// 相册参数配置,configuration有默认值,可直接使用并对其属性进行修改
ac.configuration.maxSelectCount = 5;
ac.configuration.maxPreviewCount = 10;

//如调用的方法无sender参数,则该参数必传
ac.sender = self;

// 选择回调
[ac setSelectImageBlock:^(NSArray<UIImage *> * _Nonnull images, NSArray<PHAsset *> * _Nonnull assets, BOOL isOriginal) {
    //your codes
}];

// 调用相册
[ac showPreviewAnimated:YES];

// 预览网络图片
[ac previewPhotos:arrNetImages index:0 hideToolBar:YES complete:^(NSArray * _Nonnull photos) {
    // your codes
}];


// 直接调用相机
ZLCustomCamera *camera = [[ZLCustomCamera alloc] init];


camera.doneBlock = ^(UIImage *image, NSURL *videoUrl) {
    // 自己需要在这个地方进行图片或者视频的保存
};

[self showDetailViewController:camera sender:nil];

English

可能有翻译不正确的地方,还请英语大佬校准校准

Functions

  • Multiple orientations support: Portrait, Landscape
  • Adaption with iPhone X
  • Supports quick selection in preview list, can set maximum preview numbers (drag selection supported)
  • Select from album directly (slide to select multiple images is supported)
  • Edit images (image filter, cut-out proportion can be customized)
  • Edit videos
  • View and select gif, LivePhoto(iOS 9.0+), video
  • 3D Touch preview image, gif, LivePhoto, video
  • Select image, gif, LivePhoto, video assembly
  • Download photos from iCloud online
  • Control to select video max play time
  • Internationalization (current supported: Simple Chinese, English, Japanese, Traditional Chinese. Can follow system or changed in code. Can specify the other language)
  • Including camera cell in album, rendering captured image in real time
  • Able to have a mask on selected items
  • Preview selected items
  • Preview images/videos saved locally or online (long press to save image to album is supported)
  • Customize radius of images in album
  • Able to sort ascending items or descending items
  • Click to take photos or long press to record videos is supported (just like WeChat)
  • Can customize resource images
  • Able to Export video (Can specify video size or add an image watermark or particle effects. PS: text watermark is not supported currently)

Requirements

iOS 8.0+ Xcode 9.0+

Usage

Step1

  • Manually

    1. Drag PhotoBrowser/ folder into your project
    1. Import Photos.framework and PhotosUI.framework
    1. This repo relays on SDWebImage and GPUImage, so you also need it
    1. Import "ZLPhotoActionSheet.h" at where you wanna use it
  • Cocoapods

    1. Add pod 'ZLPhotoBrowser' to your Podfile
    1. pod setup
    1. pod install or pod update
    1. import <ZLPhotoBrowser/ZLPhotoBrowser.h>
  • Carthage

    • 1.Add github "longitachi/ZLPhotoBrowser" to your Cartfile
    • 2.Run carthage update --platform ios and add the framework to your project.
    • 3.import <ZLPhotoBrowser/ZLPhotoBrowser.h>

Step2

  • add description in info.plist
Localized resources can be mixed YES
Privacy - Photo Library Usage Description
Privacy - Camera Usage Description
Privacy - Microphone Usage Description

问答

  • 关于 @available(9.0, *) 报错 (#90)

该错误会出现在XCode 9.0以下版本,把该代码替换为 [UIDevice currentDevice].systemVersion.floatValue >= 9.0 即可

  • pod 2.4.3 以下版本更新到 pod 2.4.3 以上版本报如下错误 Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<ZLThumbnailViewController 0x15bed0d10> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key verLeftSpace.'

由于 pod 2.4.3 版本删除对应xib,所以请执行 command+shift+k clean项目,重启Xcode即可

效果图

  • 多语言国际化效果图 image image image image

  • iPhone X

image

image

  • 3DTouch预览效果图

image

  • 导出视频添加粒子特效(雪花效果)

image

  • 编辑视频预览图

image

  • 编辑图片预览图

image

  • 自定义相机效果图及介绍

image image

  • 滑动多选预览图

image

  • 拖拽选择预览图

image

  • 混合选择预览图

image

  • 横屏预览图

image

  • 预览网络图片

image

  • 遮罩层

image

  • 预览快速多选效果图

image image

  • 直接进入相册选择相片效果图

image

  • 预览大图及缩放效果图

image image image

  • 拍照

image

  • 相册内混合选择效果图

image

  • 预览已选择照片效果图

image image

  • 原图功能效果图

image