美文网首页iOS开发攻城狮的集散地iOS开发文章iOS 大神之路
仿照微信的效果,实现了一个支持多选、选原图和视频的图片选择器,适

仿照微信的效果,实现了一个支持多选、选原图和视频的图片选择器,适

作者: 半尺尘 | 来源:发表于2016-01-08 15:54 被阅读11558次

重要提示

  1. 1.9.0版本已发布,移除了"prefs:root="的调用,这个API已经被列为私有API,请大家尽快升级。其它同样使用了该API的库大家可以检查下,比如著名的SVProgressHUD
  2. 如果你发现了Bug,请先尝试更新到最新版,此前的版本可能存在一些bug。如果你已经是最新版了,请在github上提一个issue,我看到了会尽快处理哈~

前段时间空余时间比较多,打算尝试做一个图片选择器出来,仔细对比了很多自定义了图片选择器的应用,感觉最喜欢微信的界面效果,当然微博的功能更强大,还支持了LivePhoto,所以打算模仿微信的界面效果,瞄着微博的功能去做一个图片选择器出来。

一. TZImagePickerController简介

这个图片选择器还没达到我理想中的效果,但是最近工作开始忙起来了,所以有一些功能放在以后加入吧。目前这个图片选择器:

  1. 支持图片多选、选原图和视频;
  1. 支持预览图片和视频;
  2. 适配了iOS6~10;

总体上跟微信的照片选择器界面和功能都差不多一样,当然我这个弱不少...效果图如下:

  1. TZPhotoPickerController, 照片选择控制器

2.TZPhotoPreviewController. 照片预览控制器

3.TZVideoPlayerControlle. 视频预览控制器

对照片选择器要求不是很高的应用来说,这个图片选择器还算是够用了,这段时间考察了github上若干个支持多选的图片选择器,界面效果和功能都比这个差些,可能是有更好的我没发现吧...

二. 如何集成

该图片选择器支持CocoaPods, 在你的Podfile文件中加入`pod 'TZImagePickerController' 即可集成。

如果你喜欢手动导入,到github下载代码后,将TZImagePickerController文件夹拖入到你的项目中,再#import "TZImagePickerController.h"即可。

集成这个图片选择器,最少只需要三行代码,用起来还是很方便,可以节省开发者的时间,把更多的时间和精力花在业务逻辑和自己想钻研的技术点上去。

TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:9 delegate:self];

// You can get the photos by block, the same as by delegate.
// 你可以通过block或者代理,来得到用户选择的照片.
[imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {

}];
[self presentViewController:imagePickerVc animated:YES completion:nil];

代码截图如下:


三. 相关类的介绍

1.TZImageManager:唯一import了和的类,向外界提供有获取相册/照片/视频资源的接口,在里面每个方法内部会判断系统版本,从而选择是从AssetsLibrary库「iOS9以前可用」还是从Photos库里获取照片资源「iOS8以后可用」。
2.TZImagePickerController:导航栏控制器,通过改变该控制器的一些属性来达到你想要的效果,比如设置maxImagesCount属性来约束用户最大可选图片张数,默认为9张;设置allowPickingOriginalPhoto属性为NO不允许用户选择视频,默认是YES;设置allowPickingVideo属性为NO不允许用户选择原图,默认是YES。
3.TZPhotoPickerController:照片选择控制器,一个collectionView每行4个cell展示图片。
4.TZPhotoPreviewController:照片预览控制器,用的是collectionView而不是scrollView,所以不用处理重用逻辑,然而图片的间隙我还没弄出来...以后再弄吧...(已出...)
5.TZVideoPlayerController:视频预览控制器,简单的播放/暂停/发送视频功能,用的是AVPlayer来播放。进度条下次有空再加上吧...
6.TZAssetModel:装有一个图片/视频/音频资源的模型,对应一个图片/视频Cell「TZAssetCell」,资源属性名为asset,可以从TZImageManager取出资源对象「图片/视频/音频」。
7.TZAlbumModel:装有一个相册资源的模型,对应一个相册Cell「TZAlbumCell」,资源属性名为result,可以从TZImageManager取出所含有的图片资源数组。

四. 微信图片选择器的一些技术点

优点实在太多了,说两个我发现的小缺点吧。

小缺点1:在相册列表页,空的cell也会显示,出现许多空的分割线。「也可能是微信的产品或iOS喜欢这个调调...」

  • 我的解决方案:加上这一句_tableView.tableFooterView = [[UIView alloc] init];会不再显示空的cell。当然也可以隐藏系统的分割线,自己加一个高0.5~1像素的View作为分割线。

小缺点2:在照片选择器页,微信的设计是不允许同时选择视频和照片的,但是在照片预览页面,用户却可以同时选中视频和照片,此时微信会默认将视频作为图片发送,而没有做一个提示。并且,如果用户选择了发送原图,此时视频虽然也被选中出来了,但是会一直发送失败。

  • 我的解决方案:在照片预览页面,如果用户在选择了图片的情况下又选择了视频,提示用户会默认将视频做图片发送。并且在图片浏览器页面,如果预览到了一个视频,则将原图按钮隐藏,在计算原图大小的方法里也会过滤掉视频资源。

当然微信的图片选择器是很优秀的,比如我今天在用iOS6系统的4s真机测试时,发现第一次弹出图片选择器时,如果相机胶卷相册图片数大于1000,我的这个会有比较明显的卡顿,而微信的却依然流畅...考虑到这个罕见的iOS6系统4s机子不是我的、工作要开始忙了、毕竟这只是4s等原因,这个优化就等下次有空再来研究吧...(1.4.2版本更新:这里已优化,是AssetsLibrary的一个坑...)

五. 更新记录

1.4.5版本(2016.05.23)
在照片列表页新增了拍照按钮,可以全局记录哪个相册已选中了多少张图片,预览控制器可以在外界打开。同时Demo页面也做了一些优化,可以直接删除选中的照片、可以对照片进行长按排序等。当然期间也修复了许多小bug,表现更加好了。
最值得一提的是,1.4.5版本的性能大幅提升了,在我的iOS9.3.2系统6s设备上(870张照片),平均滑动帧数在58左右,滑动十分流畅,在iOS7.0.4的4s设备上(124张照片),平均滑动帧数在57左右,也十分流畅。经过对比,和QQ的图片选择器滑动帧数表现基本一致,都十分流畅,同时都强于微信的图片选择器。微信的图片选择器,在快速滑动的时候明显感到有一丝卡顿,通过Core Animation查看发现,微信的图片选择器在我的6s设备下帧数平均约52左右,好几次甚至低于50,在4s设备上则表现更糟一些。下面贴上帧数测试截图,大家也可以测试一下~

TZImagePickerController的帧数表现 (iOS9.3.2 6s).png TZImagePickerController的表现 (iOS7.0.4 4s).png QQ图片选择器的帧数表现 (iOS9.3.2 6s).png QQ图片选择器的帧数表现 (iOS7.0.4 4s).png 微信图片选择器的帧数表现 (iOS9.3.2 6s).png

1.5.0版本(2016.06.22)
1.可把拍照按钮放在外面了,可以设置弹出一个sheet提示用户选择相册或相机;
2.新增了sortAscendingByModificationDate属性,默认为YES,设置为NO时,照片会按修改时间降序,拍照按钮会在第一个;
3.优化了Demo页面的UI,新增6个开关控件,可方便地更改各个设置来打开选择器;
4.修复了若干bug;

1.6.3版本(2016.08.29)
1.支持单选模式,将maxImagesCount设置为1即可。
2.支持国际化,目前支持中文和英文。
3.图片名字可从外界传,无须再改动源码。
4.图片预览界面照片之间留20像素的间隙,优化预览效果。
5.图片选择页可自定义图片展示列数。

最近更新
2.0.0.6 优化自定义languageBundle的支持,加入使用示例
2.0.0.5 优化性能,提高选择器打开速度,新增越南语支持
2.0.0.2 新增繁体语言,可设置首选语言,国际化支持更强大;优化一些细节
1.9.8 支持Carthage,优化一些细节
1.9.6 优化视频预览和gif预览页toolbar在iPhoneX上的样式
1.9.5 优化视频导出API,和其它一些细节
1.9.4 适配iPhoneX
1.9.0 移除"prefs:root="的调用,这个API已经被列为私有API,请大家尽快升级
1.8.8 修复一些细节
1.8.5 修复一些样式细节
1.8.4 加入横竖屏适配;支持视频/gif多选;支持视频和照片一起选
1.8.1 新增2个代理方法,支持由上层来决定相册/照片的显示与否
1.8.0 修复若干bug, 提升流畅度
...
1.7.7 支持GIF图片的播放和选择
1.7.6 支持对共享相册和同步相册的显示
1.7.5 允许不进入预览页面直接选择照片
1.7.4 支持单选模式下裁剪照片,支持任意矩形和圆形裁剪框
1.7.3 优化iCloud照片的显示与选择
...

六. 常见问题

Q:pod search TZImagePickerController 搜索出来的不是最新版本
A:需要在终端执行cd转换文件路径命令退回到Desktop,然后执行pod setup命令更新本地spec缓存(可能需要几分钟),然后再搜索就可以了

Q:拍照后照片保存失败
A:请参考issue481:https://github.com/banchichen/TZImagePickerController/issues/481 的信息排查,若还有问题请直接在issue内评论

Q:photos数组图片不是原图,如何获取原图?
A:请参考issue457的解释:https://github.com/banchichen/TZImagePickerController/issues/457

Q:预览界面能否支持传入NSURL、UIImage对象?
A:排期中,优先级高

Q:可否支持横屏?
A:排期中,优先级中

Q:可否加入视频拍摄功能?
A:排期中,优先级中

Q:可否加入视频多选功能?
A:排期中,优先级中

Q:可否让视频和图片允许一起选?
A:排期中,优先级中

Q:可否增加微信编辑图片的功能?
A:考虑下,优先级低

七. 其它

更具体的信息大家感兴趣的话去看代码吧,如果发现了bug请提一个issue,当然最好你给顺便解决了并提一个pull request,这样最帅了对吧...
代码地址:https://github.com/banchichen/TZImagePickerController
欢迎使用,觉得不错请给一个小小的star鼓励一下~

相关文章

网友评论

  • shine丶明:你好 关于录制视频 然后预览视频方向的问题 请问怎么操作呢 就是手机横向录制视频,预览的时候是竖着的
  • 朱晓晓的技术博客:有QQ联系方式吗 谢谢
    半尺尘:@朱晓晓的技术博客 在文章里搜QQ群三个字
  • 朱晓晓的技术博客:单选一张图片,底下的"取消"和"选择"两个按钮放在哪里的,没有看到
    半尺尘:@朱晓晓的技术博客 没有"取消"和"选择"两个按钮。
  • 张鑫说保:楼主,你好,我更新完新版本之后,TZImagePickerController.h内92行@property(nonatomic, assign) BOOL isTakePhoto;这个属性没有了,我需要怎么样快速调整,可以正常使用呢?
    半尺尘:@唯我独鑫 我应该一直没用过isTakePhoto这个属性...你直接删掉isTakePhoto的赋值看看...
  • reloadRen:楼主你好,单选图片编辑,可以自由剪辑和旋转吗?现在用RN框架,正缺这个功能,想要桥接给RN的js使用
    半尺尘:@reloadRen 不支持哈。
  • 雨季的雾:单选裁剪时, 不会自动适应裁剪框.
    在iPhone5上保存视频失败!
    半尺尘:@雨季的雾 把这个视频发给我下,QQ群:778723997
    雨季的雾:保存视频出错:The operation couldn’t be completed. (Cocoa error -1.)
    半尺尘:@雨季的雾 保存失败报什么错?
  • 齊同学:请问选择GIF图片的类型uianimatedimage 如何转化为NSData呢?还有我在选择GIF图之后、setDidFinishPickingGifImageHandle并没有调用:sob:
    齊同学:@半尺尘 感谢您的解惑、谢谢
    半尺尘:可以用TZImageManager的getOriginalPhotoDataWithAsset通过asset获取NSData。

    如果gif是在预览页单选的,是走didFinishPickingGifImageHandle,否则是走didFinishPickingPhotosHandle
  • logan丶:请问怎么设置拍照不自动保存到系统相册呢? 找了好久没看到:flushed:
    logan丶:@半尺尘 原来如此,谢谢
    半尺尘:在框架内的拍照必须保持到相册,否则返回的selectedAssets和selectedPhotos值对应不起来...
    如果不需要保存到相册,可以参考demo,把拍照按钮放到外面,自己随意控制
  • 旭哥哥:作者您好,我发现每次调起图片选择器的时候,会默认勾选上一次选择过的照片。想去掉这个功能,看了一圈api没找到,想请教一下。
    半尺尘:@旭哥哥 不传selectedAssets
  • 天上飞的狒狒:你好,我这边又遇到一个现象 就是 直接从你的方法中取到的 PHAsset 中的视频(自己手机竖屏拍摄的情形),直接转化为 NSData 上传的阿里云后,再下载下来 视频发生了90度的旋转,貌似是视频本身是发生的旋转。大神有没有遇到过,谢谢。
    半尺尘:@天上飞的狒狒 他们支持直接用PHAsset上传吗?
    这个还没见反馈过,你是多少版本?
  • 天上飞的狒狒:你好,我发现通过手机QQ保存到系统相册的视频,在你的这个相册选择器中不能显示,有谁遇到和我一样的问题吗?还是我哪里没有设置好。
    天上飞的狒狒:@半尺尘 有的
    半尺尘:系统相册有吗?
    半尺尘:@天上飞的狒狒 系统相册有的tz就有,设置了允许选视频吗,demo正常吗?
  • L泽:最新版本选择视频直接调用didfinishpickingphotosHandle,这种方法也会随着版本更新实现吗?
    L泽:我觉得同时选择图片和视频最好再写个handle。这个不兼容老版本的逻辑。我还能怎么办,当然我自己改喽:smile:
    半尺尘:@L泽 允许多选视频的是走didFinishPickingPhotosHandle,单选的则走didFinishPickingVideoHandle
    L泽:问题是调用handle走错了
  • 3fdb581ec682:大神请教一个问题,我现在的话就是要实现一个功能,可以选择多个文件包括视频和图片,然后把视频和文件上传,现在你的这个框架可以实现这个功能吗,我刚才下载代码操作了一下,把允许选择图片和视频还有就是允许多视频和gif都选上,可以实现选择多个图片和视频,但是他们可以上传吗?有没有换存在本地呢,不是很明白,希望给解答一下
    3fdb581ec682:@半尺尘 我现在就是用七牛的sdk上传,搞不清楚的是视频要不要倒出来到沙盒里面,还有就是图片是不也的倒出来到沙盒,你的这个框架里面这些回掉图片和视频操作就是单纯的拿到asset,都没有执行倒出操作到沙盒是吧
    半尺尘:某些第三方SDK支持直接用asset上传,这种情况那就不用导出视频了
    半尺尘:@南海一页扁舟 多选视频和图片,返回给你的asset数组你判断下类型(参考Demo的isAssetCanSelect),如果是图片,就直接取photos数组的图片上传,如果是视频,就用TZImageManager的getVideoOutputPathWithAsset方法(Demo有示例)导出到沙盒。
  • LINGSHOW:博主你好,你的框架保存视频到相册的方法 saveVideoWithUrl , 在iOS9之后会在保存成功之后删除原来的视频,我这边想在视频导出到系统相册后 保留 原来的视频。能否扩展这个方法的功能,添加一个属性让调用者决定是否删除原视频呢 ?谢谢~
    LINGSHOW:@半尺尘 好的,谢谢你的建议:+1:
    半尺尘:@DXin 你是在库外面调的saveVideoWithUrl吗?要不你复制下saveVideoWithUrl的实现,放到自己工程里吧~这样最快也没什么不好的影响
  • delegate:您好,手动导入的时候报:模拟器:ld: 311 duplicate symbols for architecture arm64真机报错:ld: 311 duplicate symbols for architecture x86_64;是什么原因呢?
    delegate:@半尺尘 谢谢大佬,已解决
    半尺尘:@delegate 有重复的符号导致的,是不是pod里也还有?错误内容截完整才好断定,可加Q群截图:778723997
  • 回眸月:如果要自定义导航栏,并且隐藏下面的预览、原图这几个按钮,是不是只能在TZImagePickerController里面修改?
    半尺尘:@回眸月 是指获取某个相册所有照片原图吗? 比如一个个地获取
    回眸月:@半尺尘 获取某个相册下的所有原大小的图片,使用的方法是哪个?只能一层一层的嵌套获取吗
    半尺尘:隐藏按钮好做的,实现photoPickerPageUIConfigBlock就可以。

    导航控制器TZImagePickerController是你自己创建的,自然是可以自定义导航栏的
  • LINGSHOW:你好,目前能不能只展示视频或者只展示图片。
    LINGSHOW:@半尺尘 谢谢大神耐心的解答 :+1:
    半尺尘:能,你体验下Demo,有控制开关的
  • 小石头JS:你好,点击加号选择图片进入相机胶卷界面(所有照片界面),点击左上角返回按钮到照片界面(相册列表界面),可以在点击加号的时候就进入照片界面(相册列表界面)吗?
    小石头JS:厉害了,感谢分享,感谢即使回复~~:+1: :+1:
    半尺尘:@lisary_email - (instancetype)initWithMaxImagesCount:(NSInteger)maxImagesCount columnNumber:(NSInteger)columnNumber delegate:(id<TZImagePickerControllerDelegate>)delegate pushPhotoPickerVc:(BOOL)pushPhotoPickerVc;
    给pushPhotoPickerVc传个NO
  • 潘烨:有没有选择视频后编辑视频功能啊
    半尺尘:@潘烨 目前没有的
  • d5c653c2f525:我想问下在拍摄视频的过程中如何给_selectedAssets添加asset。。。我这里不知道怎么添加导致拍摄的视频无法预览到。。。
    d5c653c2f525:@半尺尘 可以了 - - 不好意思
    d5c653c2f525:@半尺尘 在外部直接选择拍摄视频拍出来的视频压缩不了,走不了你写的方法的压缩 我自己写的也老是AVAssetExportSessionStatusFailed,这是什么原因?
    半尺尘:@Crayonnerry 看最新的Demo,可以在外面拍视频了,有这个效果。
  • 拔山河:使用很方便,但是标题是英文的
    半尺尘:@拔山河 多玩玩Demo,Demo有这样的开关的
    拔山河:已经解决。谢谢。 我遇到选择图片选择时显示选择图片库选择时,显示了拍照图标。但是有的应用是只让选择图片 不让拍照的,怎么把拍照图标隐藏啊?微信分享时也没有在图片里有拍照图标。
    半尺尘:这里有如何设置的说明:https://github.com/banchichen/TZImagePickerController/issues/443
  • xiari1991:根据asset获取图片时,为什么不直接设置networkAccessAllowed = yes,而是在requestImageForAsset之后,发现需要网络去请求时,再去设置networkAccessAllowed = yes呢?还有为什么第二次请求改成了requestImageDataForAsset的请求方式,而不用requestImageForAsset呢?
    半尺尘:@yf_js 好的,QQ上还没收到申请...
    xiari1991:@半尺尘 我不清楚怎么测试iCloud。好像我所有的图片都是在本地的,不用从icloud请求。已加你qq
    半尺尘:@yf_js 好问题,这个地方不是特别清楚当时的考虑了,requestImageDataForAsset不能设置targetSize取到指定大小的图片,不通用。可以考虑改成调requestImageForAsset的时候设置networkAccessAllowed = YES看看对iCloud图片支持得怎么样,你可以试试,然后我们群里沟通:778723997
  • 灌水iOS:为什么不能选多个视频呢?我是最新的 (2.1.4)
    半尺尘:@Dear伟 大兄弟,看Demo呀,选中Demo的开关:“允许多选视频/GIF图片”
  • biny_ios:已经修改好了,感谢作者!!
  • biny_ios:您好,我想问一下,这边图片不满足正方形的情况下,看剪切后图片之外是白色背景,有什么办法可以修改剪切后的图标背景颜色吗?
  • 天下只有一个:你好,请问下,如何把录像单独拿出来?就是类似是点击直接弹出录像的页面
  • SunnyLeong:真机怎么运行?
    半尺尘:修改bundleId,选择你们的team
  • 叫我Button丶:大佬,存于iCloude的视频选择完毕之后回调里边asset为nil,我想是因为本地并不存在该视频,所以我想和图片一样的处理,点击视频之后做一个下载操作,然后下载完成之后才可以预览并且选择,这样做可行度高吗?
    半尺尘:@叫我Button丶 可以在用户选择完视频,我给你asset之后,你再去下载
    叫我Button丶:@半尺尘 大佬,感谢你的回复,我明白了,我为空的地方并不是选完视频后的回调那儿,而是我将asset通过PHImageManager获得AVAsset的时候获取失败,这种情况只有视频存于iCloud时会出现。原因我认为在于选的时候并没有下载下来,只是临时的预览,我试过了,没网的情况没法预览。所以我目前需要做的是在选择视频的时候做一个异步下载,下载完成之后才可选、可预览,这样我在预览页面点击完成再回来就能拿到选的视频了。就像大佬处理iCloud图片那样!
    半尺尘:asset是nil是不正常的哈,asset为nil的话视频的封面图会拿不到,我内部应该已经崩溃了...
  • 佟瑾年:我想请问一下我集成你这个,在选择拍照的时候,在6p上会出现卡顿,偶尔还会崩,别的手机没有问题?请问一下楼主怎么解决呢?
    还有一个问题,请教,就是在调用系统相机拍照照片的时候,会使内存暴涨基本上照相在5张就能达到300兆,导致崩溃会不会是这个原因
    半尺尘:@佟瑾年 哥,我这复现不出来,你那里是Demo也无限涨内存吗?
    佟瑾年:@半尺尘 我给你BUG重现一下吧!就是拍照然后点击叉,重复操作,就会造成内存无限涨,这也就是说如果多次调用拍照也会造成内存的无限增长。麻烦您看一下,帮忙解决一下哈
    半尺尘:拍照我调的是系统的,倒没做什么多的操作,我在Demo里用iPhone 8拍了5张照片内存只涨了十几M,下次找个6P看下...
  • UnknowException:什么时候支持网络图片预览
    半尺尘:@UnknowException :smile:
    UnknowException:网上找了好多个图片选取的,还是你这个好,就是还没支持网络图片预览
    半尺尘:@UnknowException 还不确定
  • 安红唯CC:请问下,我这边从iCloud同步是图片和视频,图片就会有提示正在同步,并且会有同步的进度显示,但是视频就没得,直接能选择,但是选择的视频length等于0。
    安红唯CC:@半尺尘 唯一一个iCloud没同步的视频导出来的,结果上传了之后播放就是一片黑
    安红唯CC:@半尺尘还是基本上都导出失败呢?
    视频导出失败:视频导出失败,error:Error Domain=AVFoundationErrorDomain Code=-11833 "无法解码" UserInfo={NSLocalizedFailureReason=找不到此媒体所需的解码器。, NSLocalizedDescription=无法解码, AVErrorMediaTypeKey=vide, NSUnderlyingError=0x17064e910 {Error Domain=NSOSStatusErrorDomain Code=-12906 "(null)"}}
    半尺尘:@安红唯CC 从iCloud同步的是照片和视频封面,说明这个存储在iCloud的视频的封面从本地获取到了。视频有封面就能选择,选完后调导出方法(Demo有)把视频保存到沙盒可以拿到二进制数据
  • db89cc3306b1:现在这个版本不能从外部传入URL或者image对象嘛?
    半尺尘:@367_8f22 目前還不行
  • Sweet丶:[[TZImageManager manager] getCameraRollAlbum:NO allowPickingImage:YES needFetchAssets:NO completion:^(TZAlbumModel *model)
    方法里面的needFetchAssets是什么意思,没有说明一下
    半尺尘:意思是是否需要获取相册里的照片数组
  • 胖子程:兄台,TZImagePickerController支持Swift么?
    半尺尘:@胖子程 如QQ所说,1.0.3版本的tag已经恢复
    胖子程:@半尺尘 我在pod中加入pod 'TZImagePickerControllerSwift',pod install后提示——
    Installing TZImagePickerControllerSwift (1.0.3)

    [!] Error installing TZImagePickerControllerSwift
    [!] /usr/bin/git clone https://github.com/tanhuang/TZImagePickerControllerSwift.git /var/folders/_j/_wmb12r15494y1c49pmytx0c0000gn/T/d20180502-4882-1l12s1i --template= --single-branch --depth 1 --branch 1.0.3

    Cloning into '/var/folders/_j/_wmb12r15494y1c49pmytx0c0000gn/T/d20180502-4882-1l12s1i'...
    warning: Could not find remote branch 1.0.3 to clone.
    fatal: Remote branch 1.0.3 not found in upstream origin
    半尺尘:@胖子程 swift可以使用OC库的,桥接一下,这也有一个内测的swift版:https://github.com/tanhuang/TZImagePickerControllerSwift
  • 进击的小巨牛:点击拍摄可以直接进拍摄视频页面吗?而不是在里面还要再点一次拍摄视频
    半尺尘:@进击的小巨牛 Demo里有这样的效果,参考Demo
    进击的小巨牛:@半尺尘 我加了一个ActionSheet 点击拍摄我想直接调起摄像头进入拍摄 ,而不是在里面再点拍照按钮才开始拍摄
    半尺尘:@进击的小巨牛 设置不允许拍照的话,就只有拍视频。如果同时能拍照和拍视频的话,拍照会在前面。
  • 糖玲微时光:微信新多图选择风格大变,作者是否需要更新和微信风格一样
    半尺尘:目前还没有计划哈
  • 32c0a3e504c2:楼主,这个方法里的 needFetchAssets 参数有什么用,我试了一下,好像没有什么区别嘛。- (void)getCameraRollAlbum:(BOOL)allowPickingVideo allowPickingImage:(BOOL)allowPickingImage needFetchAssets:(BOOL)needFetchAssets completion:(void (^)(TZAlbumModel *model))completion ?
    32c0a3e504c2:@半尺尘 好的,谢谢
    半尺尘:needFetchAssets为YES时会去拿相册的所有照片对象,否则不拿。相册过大时needFetchAssets位YES会有一定消耗
  • 4c07b5d5c5b2:虽然我已经改过代码。。。但是想建议一下,图片上传到最大数量之后把上传按钮隐藏,小小建议,方便直接接入。。
  • 4c07b5d5c5b2:建议选择照片的时候“对号”选中状态,改成数字选中。期待更新
    4c07b5d5c5b2:@半尺尘 恩,期待更新
    半尺尘:后期可能支持设置对号或数字两种方式~
  • TimeLaoKey:请问有视频拍摄功能吗
    半尺尘:@TimeLaoKey 目前没有的,PR里有可以参考下:https://github.com/banchichen/TZImagePickerController/pulls
  • 小熊翻译App:再次打开相册能不能显示已选择的
    小熊翻译App:@半尺尘 谢谢
    半尺尘:参考Demo,要传selectedAssets
  • 羊羊羊的洋:作者 能着重介绍下你的 图片 视频怎么取出来吗? 还有上传先选中图片的时候 就不能选中视频 先选视频的时候就不能选 图片 否则你返回的数据数组里 岂不是乱糟糟的 上传给服务器都不好区分
    羊羊羊的洋:@半尺尘 你的demo 貌似点击collectionView itemCell 无响应
    羊羊羊的洋:@半尺尘 但是默认情况下视频不能多选 这个怎么搞!求指点
    半尺尘:默认条件下就是图片与视频只能选一种的,选中图片和视频是两个回调,具体可以体验下Demo。
  • Davis_:相册使用icloud功能的,如果是gif的图片,播放不了,本人QQ1711647013,可以加我讨论一下
    半尺尘:@Davis_ 已加
  • 86ca30091991:请问楼主 为什么我选择视频上传会被压缩了呢?难到不原视频的?
    半尺尘:@TT_gavin 网络内部错误....这个日志出现的时候,功能有什么影响吗?
    86ca30091991:@半尺尘 CF 好的 但是今天我在用照片代理回调时候出现控制台出现这个错误 Network internal error (0xc01a:/BuildRoot/Library/Caches/com.apple.xbs/Sources/CFNetwork/CFNetwork-811.5.4/Loading/URLConnectionLoader.cpp:304)
    半尺尘:@TT_gavin 新版导出视频时可以设置分辨率
  • CoderFC:大神,单独使用TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithSelectedAssets:self.selectedPhotos selectedPhotos:self.dataSourceArr index:imageView.tag];这个方法来预览图片,点击预览后,有没有删除图片的功能呢?
    半尺尘:@CoderFC 参考Demo,Demo是有的。。。
    CoderFC:@半尺尘 如果是在相册选择里面是有的,但是如果我在选择完照片返回后,我拿到所有的图片asset,然后创建TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithSelectedAssets:self.selectedPhotos selectedPhotos:self.dataSourceArr index:imageView.tag];把选择的照片传进去,然后再present来预览图片,这时右侧就没有按钮了
    半尺尘:@CoderFC 预览后,照片的右上角有个选中按钮,点一下就取消选中,相当于删除
  • 顺其自然JX:请问在TZPhotoPickerController.m里面的fetchAssetModels方法为什么要用dispatch_sync(dispatch_get_global_queue(0, 0), ^{};这样写,
    半尺尘:@顺其自然JX 我看了下代码,是用的dispatch_async,是用的异步的
    顺其自然JX:@半尺尘 但是同步的话不会开线程还是在当前线程,主线程
    半尺尘:@顺其自然JX 照片过多时比较耗时,放在子线程不卡主线程
  • 孤单的道行天尊:博主,非常喜欢您的框架,一直在用.体验一直很不错.不过最近有个优化问题一直在困扰我.如果手机相册里有数万张图片的时候会卡顿1-3秒后才弹出界面.不知道怎样才能减少这方面卡顿的损耗
    孤单的道行天尊:@半尺尘 感谢博主~正在看
    半尺尘:@孤单的道行天尊 你好,使用2.0.0.5+版本,优化了超多图片时的启动慢问题哈:
    2.0.0.6 优化自定义languageBundle的支持,加入使用示例
    2.0.0.5 优化性能,提高选择器打开速度,新增越南语支持
  • 白与红与黑:作者您好,有个问题请教一下,拍照在外面的情况,能否拍照完成不获取asset 直接传入image进行裁剪呢。图片不需要保存相册我觉得多这步骤有点麻烦
    半尺尘:@轻语倾谈 昂,是的,不传asset的话,你需要自己写一个裁剪页面,或者引一个图片裁剪框架进来~
    白与红与黑:@半尺尘 你提供了一个裁剪方法 TZImagePickerController *imagePicker = [[TZImagePickerController alloc] initCropTypeWithAsset:nil photo:image completion:^(UIImage *cropImage, id asset) 这里面WithAsset 我传的nil ,image是有内容,但是到裁剪页面没有图片展示。:sob:
    半尺尘:拍照在外面的时候,我的做法只是个Demo哈,你可以随便改...
  • 旷世流年:亲,如何获取到选取的图片地址啊!我用了哪三步,但是block以及协议代理中不打印数据的。
    旷世流年:@半尺尘 抱歉,之前使用的是另一个人封装你的,获取不到,Demo我正在看!感谢大神
    半尺尘:@旷世流年 你好,参考Demo哈,Demo里的block和代理回调都是生效的
  • Hengry:大神有swift版本吗
    半尺尘:@DevHank 目前还没有哈
  • 2c68a794e6c3:我把这个添上 TZImagePickerControllerDelegate 就会报错,报 "l_OBJC_PROTOCOL_$_TZImagePickerControllerDelegate", referenced from:
    l_OBJC_CLASS_PROTOCOLS_$_ViewController in ViewController.o
    ld: symbol(s) not found for architecture i386
    clang: error: linker command failed with exit code 1 (use -v to see invocation)

    请问是什么情况
  • 6b80abe14784:期待更新预览图片下方有个已选图片列表,类似微信现在的预览图片
  • 葬身:感觉很好 许多相册方面的问题都是参考这个。想问下大神, 如何把相机和相册列为并列关系,实现相机拍摄完毕时的图片剪切呢, 谢谢!
    葬身:@半尺尘 嗯嗯 看见了 已解决 谢谢!感觉很好
    半尺尘:@葬身 不是很明白你的需求...在Demo里,如果设置了需要采集,相机拍完照后也是会去裁剪页面的哈。
  • Nbm:怎么在相册中只显示视频
    Nbm:@半尺尘 嗯嗯,谢谢,当时没想到把图片显示关掉就可以实现效果了:smile:
    半尺尘:@Nbm 参考Demo界面,打开显示视频的开关,关闭显示图片的开关。
  • 金银岛:大佬的 lib 确实拯救了很多人,我似乎还没有找到比您的这款 lib 更好的第三方相册选择组件:sunglasses:
  • 遛遛食:请教可以一进来先展示几张网络的图片吗?
    可以把asset数组给去掉吗?
    半尺尘:@遛遛食 目前还不能。。
  • b869facd5ce7:不能过滤设定时间内的视频么? 照片功能都做了 就差视频的:grin:
  • b869facd5ce7:期待更新视频拍摄功能 :smiley:
    半尺尘:现在已经加上去了哈,目前最新版2.1.3
  • df0188473228:目前在用,不过发现个问题。
    1、我用的demo测得,手机iPhone7,选择200多张图片然后确认,内存会暴涨,然后就被干掉了
    2、demo进行修改,图片大小进行修改,width,height最高为1920,然后等比例缩放。用iPhone7测试,选80多张图片就会有内存警告,如果5s或者6,也是80张左右就被干掉了
  • cc3521e6de23:你好,我想问一下如何控制选取出来的视频的长度在十秒钟以内?
    半尺尘:你好,参考Demo,实现isAssetCanSelect代理方法即可
  • _小布丁:作者你好,想问可以获取被选图片的名称吗
    _小布丁:@半尺尘 多谢!非常感谢您
    半尺尘:@_小布丁 你好,可以的,参考Demo里的printAssetsName方法
  • 蒂埃里:你好大神, 我进入相册询问权限时先不授权,出现的那个界面:请在iPhone的“设置-隐私-照片”选项中,允许(null)访问你的手机相册,这个(null)的地方怎么改回来不是null?
    半尺尘:@蒂埃里 这样哈,你全局搜一下CFBundleDisplayName,找到我取的地方,打个断点看看哈。看取出来的[NSBundle mainBundle].infoDictionary是否正常..
    蒂埃里:@半尺尘 CFBundleDisplayName是有的,info.plist文件里Bundle name引用的是 ${PRODUCT_NAME}
    半尺尘:@蒂埃里 你好,这里取的是[NSBundle mainBundle].infoDictionary里的CFBundleDisplayName,取不到则会取CFBundleName。检查下info.plist文件里,有设置了Bundle name吗
  • SAW_:很好的图片选择器,大部分都模仿到了,大佬要是有空能跟进最新的细节UI啥的就更好了:grin:
  • GreenC:使用CocoaPods, 在Podfile文件中加入`pod 'TZImagePickerController'集成时,获取到的最新版本是1.8.1 版本,怎么获取最新版本呢?
    半尺尘:@GreenC pod setup一下
  • EE_L:IPHONEX 什么时候适配一下啊...
  • 无神:计算图片大小的方法有问题吧,photokit里的请求imagedata的方法,默认是异步的,应该是等待下载完成才是正确的大小。
    半尺尘:@无神 存在iCloud里的,大小会先得到0B,同时去iCloud下载图片,等图片从iCloud里下载完成后,会再取一次图片大小,这时会是正确的大小。
    无神:@半尺尘 如果图片是从iCloud加载的就会有问题,本地直接加载的就是对的!那个请求的方法是异步的,而且会回调好多次,知道数据加载完成!
    半尺尘:@无神 你好,应该没问题的,之前微信的图片选择器也显示原图大小,和我这个显示的值是一样的。
  • 拾麦穗的少年:大神,请问在照片选择界面刷新数据时,照片会闪一下,有什么解决办法吗
    半尺尘:@拾麦穗的少年 你改了内部代码对吧...这个闪烁,应该是reload时触发了cell重新用asset去获取照片导致的...
    拾麦穗的少年:@半尺尘 会闪,我在选择按钮的block里reload
    半尺尘:@拾麦穗的少年 Demo里也会闪吗?
  • 无神:我看了一下您的代码木有找到如何判断“图片是否需要从icloud加载的逻辑”?
    无神:@半尺尘 我找到了,谢谢!
    半尺尘:你好,在代码里搜索一下:从iCloud下载图片
  • deqiutseng:最新版本使用时发现一个问题
    例如我设置如下以参数:
    imagePickerVc.allowPickingVideo=NO;//不充许选择视
    imagePickerVc.allowTakePicture=YES; // 在内部显示拍照按钮
    imagePickerVc.allowPickingImage =YES;//充许选择图片
    imagePickerVc.allowPickingOriginalPhoto = NO;//不充许选择原图
    imagePickerVc.allowPickingGif = NO;//不充许选择gif图
    imagePickerVc.maxImagesCount = 1;
    imagePickerVc.allowCrop=YES;//单选模式下充选裁剪

    如果我设置 //imagePickerVc.sortAscendingByModificationDate=NO;
    我使用拍照进行图片裁剪,发现获取并不是我的自拍照,而是以久以前的照片,因为设置了imagePickerVc.sortAscendingByModificationDate=NO 所以拿到并不最近自拍照。不知道这算不算是一个BUG ???
    半尺尘:@deqiutseng 你好,更新到最新版,之前有几个版本有这个问题。
  • 49377837efe2:大神,是否可以写一个swift如何使用的简单demo呢? 万分感激
  • 我的天空蔚蓝色:你那三行代码 会报错 你发现了吗
    半尺尘:@我叫CC怎么了 是全的,block和代理一样。具体MLeaksFinder弹的警告框内容是什么?我在项目里也集成了MLeaksFinder,没发现泄漏
    我的天空蔚蓝色:@半尺尘 TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:3 delegate:weakSelf];
    // 你可以通过block或者代理,来得到用户选择的照片.
    [imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets,BOOL isSelectOriginalPhoto){
    NSLog(@"photos===%@",photos);
    [weakSelf getImageWithImageView:self.photos tableViewcell:cell];
    }];
    [weakSelf presentViewController:imagePickerVc animated:YES completion:nil];
    block里面的参数 没写全,还有一个问题 我用MLeaksFinder这个第三方 检测到你的TZImagePickerController这个类 有内存泄漏 ,不知道你发现没有
    半尺尘:@我叫CC怎么了 报什么错呢~?你那里Demo运行不起来吗?
  • c6e151de6c82:您好,请问能不能加上微信一样的编辑剪切的功能,我再改,但是有问题想向你请教,希望你看到尽快联系我,qq:2183823552
  • JasonLee宸:哈喽如果直接拍照的话,就不会走判断选择张数的判定!还有一个问题,如果想要加上单张图片大小的判断,怎么实现才好呢!
    JasonLee宸:@半尺尘 👍!!多谢
    半尺尘:1、拍照是一直可以拍照的哈。只是如果可选张数达到上限,新拍的照不会自动选中...
    2、可以参考下这2个属性:
    /// Minimum selectable photo width, Default is 0
    /// 最小可选中的图片宽度,默认是0,小于这个宽度的图片不可选中
    @property (nonatomic, assign) NSInteger minPhotoWidthSelectable;
    @property (nonatomic, assign) NSInteger minPhotoHeightSelectable;
  • 轻斟浅醉17:你的这个对于选取视频内存泄露处理了吗?
  • 茄子_Apple:建议后续可以加一个视频选择器,就是用一个变量控制。目前我这边有这个需求,选择视频的时候,不能出来图片。图片选择器是用的你的,但是视频选择器我就只有自己封装了 !
    茄子_Apple:@半尺尘 我还今天自己封装了一个视频选择器,后续再研究一下你的代码!谢谢啊!
    半尺尘:@茄子_Apple 可以设置属性的哦,不让图片出来...把allowPickingImage设置为NO...
  • SunshineTeemo:请问“相机胶卷”导航栏title的设置在哪里?还有返回键的文本,TZImagePickerController里没有了。
  • 9e00a81a7112:不明觉厉,貌似功能很强大的样子,但是我竟然不会用,直接傻眼
  • 文扉Song:楼主,我在github下载最新的,放在我的项目中,拍照选择点击使用,每次必崩,不知道是怎么回事
    文扉Song:@半尺尘 *** Terminating app due to uncaught exception 'NSRangeException', reason: 'Cannot remove an observer <AVCaptureSession 0x16055750> for the key path "changeSeed" from <AVCaptureConnection 0x16058320> because it is not registered as an observer.'
    文扉Song:@半尺尘 设置了 ,拍完照点击使用照片 就不行了
    半尺尘:@文扉Song 那Demo会崩溃吗..?看看Info.plist文件,你的项目是不是少配置了权限...
  • 向钱冲啊:当 sortAscendingByModificationDate= NO 按时间排序后,拍照后选择的图片,取错了。裁剪的那张是等于YES的那张。我是ios10.2下,在博主您的demo中测试的!望回复~
    半尺尘:久等了...😂😂
    最新的Demo已经好了~
  • 晓折:楼主你好,我看很多评论你都回复了,不知道我的会不会回复.我们项目现在有这样一个需求.
    就是在拍照之后显示一个拍照好图片的预览页面,
    预览页面中只包含两个button. 一个是选中(对号), 一个是不选中(一个叉).
    点击选中之后,保存图片,直接返回到拍照页面,继续拍照,拍照数量达到我们的设定值之后,直接返回到相册.
    点击不选中之后,不保存图片,直接返回拍照页面继续拍照.
    在拍照页面也需要自定以下按钮的位置,包括闪光灯开关,摄像头切换,还有就是退出拍照页面.
    这几天我自己试着用了两种方式来做.
    一种是完全自定义相机,包括设备初始化,自己创建UI界面,但是遇到问题了,就是我屏幕旋转的时候,捕获的画面实际没有跟随屏幕改变{
    AVCaptureDevice
    AVCaptureDeviceInput
    AVCaptureMetadataOutput
    AVCaptureStillImageOutput
    AVCaptureSession
    AVCaptureVideoPreviewLayer
    AVCaptureDevicePosition
    }配置这些东西 确实有点麻烦,而且感觉和系统相机的拍照质量相差很多.最主要的是分辨率,总是不能铺满全屏


    另一种就是对UIImagePickerController自定义,遇到的问题是不能在点击拍照之后继续自定义我需要的UI页面(就是对号和叉叉),

    所以想请教大神,看看有什么高见.我的需求就是上面描述的.我已经研究了两天了,还是没有出成果,压力山大呀........
    如果看到帖子麻烦大神回复一下.帮我看看.
    或者邮件联系我13892295485@163.com
    半尺尘:@晓折 赞~ 加油~ :smile:
    晓折:@晓折 好吧。我在研究研究。既然有需求了咱就不能说不嘛。这只是了开始。不知道以后会不会还需要加滤镜特效啥的。这几天我就多查查资料吧。感谢大神…😘
    半尺尘:@晓折 你好,我其实也没自定义过相机,在技术上应该帮不了你...... 不过我觉得,如果能够说服设计和产品,将UI页面中的对号和叉叉妥协一下,采用系统的"使用照片"和"重拍"不也挺好的么....这样的话你这个问题就容易很多了.... 而且,"使用照片"和"重拍"的逻辑也很能够让人接受~ iOS用户也熟悉这样的操作。先把功能坐了,页面的优化可以以后再迭代优化~:smile:
  • 轻斟浅醉17:0x112bdbc6b <+0>: pushq %rbp
  • 轻斟浅醉17:你的这个选择视频是存在内存泄露
    半尺尘:@这小子1992 你好,MLeaksFinder库对于present出来的控制器,一定会报内存泄露的,是这个库的一个已知bug,参考链接:https://github.com/Zepo/MLeaksFinder/issues/27。调试的时候也可以参考Xcode给出的内存运行情况数据,内存不会立即释放,但会在未来15秒的样子回收(该问题在1.7.9版本已修复,目前已经会立刻释放)... https://github.com/banchichen/TZImagePickerController/issues/214
    这小子:确实,我也测试到了,过不了mleaksfinder的检测
  • b05e8c0fae9c:你好,您这个能回显后台返回的图片URL数组吗?可以再次删除或添加
  • 杨老师红烧肉:swift 也可以用这个吗
    杨老师红烧肉:@半尺尘 建议大神出一个swift用法的文章,毕竟swift现在用的人也蛮多的
    杨老师红烧肉:@半尺尘 谢谢,正需要,昨天下载了您的demo感觉做的太棒了,正是我项目需要的,谢谢
    半尺尘:@杨老师红烧肉 可以的,具体可以参考这篇博文:http://www.jianshu.com/p/0646f064d27c
  • 半尺尘:最近更新:
    1.7.6 支持对共享相册和同步相册的显示
    1.7.5 允许不进入预览页面直接选择照片
    1.7.4 支持单选模式下裁剪照片,支持任意矩形和圆形裁剪框
    1.7.3 优化iCloud照片的显示与选择
  • z小志:你好 有没有 swift 版本的呢
  • YY远远:楼主,进去的时候,怎么把选中的去掉?
    YY远远:@半尺尘 已解决
    YY远远:@半尺尘 会有问题的。如:我先选择了5张图片,在选择3张图片,最后显示结果只有3张图片,而不是8张图片
    半尺尘:@Demon_微光 不传selectedAssets
  • Claire_wu:大神,好像对全屏的视频预览也有问题
  • Claire_wu:大神,想问下这两个for循环里,这句 if (![collection isKindOfClass:[PHAssetCollection class]]) continue;大神为什么写的return,我今天用6s/9.3.5手机发现获取不到相册列表,就是因为这里被return了
    for (PHAssetCollection *collection in smartAlbums) {
    // 有可能是PHCollectionList类的的对象,过滤掉
    if (![collection isKindOfClass:[PHAssetCollection class]]) continue;
    PHFetchResult *fetchResult = [PHAsset fetchAssetsInAssetCollection:collection options:option];
    if (fetchResult.count < 1) continue;
    if ([collection.localizedTitle containsString:@"Deleted"] || [collection.localizedTitle isEqualToString:@"最近删除"]) continue;
    if ([self isCameraRollAlbum:collection.localizedTitle]) {
    [albumArr insertObject:[self modelWithResult:fetchResult name:collection.localizedTitle] atIndex:0];
    } else {
    [albumArr addObject:[self modelWithResult:fetchResult name:collection.localizedTitle]];
    }
    }
    for (PHAssetCollection *collection in topLevelUserCollections) {
    // 有可能是PHCollectionList类的的对象,过滤掉
    if (![collection isKindOfClass:[PHAssetCollection class]]) continue;
    PHFetchResult *fetchResult = [PHAsset fetchAssetsInAssetCollection:collection options:option];
    if (fetchResult.count < 1) continue;
    [albumArr addObject:[self modelWithResult:fetchResult name:collection.localizedTitle]];
    }
    半尺尘:@Claire_wu 你好....我写错了...是要continue的... 下午有位同学给我提了PR,代码已经更新了...最新的pod版本是1.6.5,修复了这里哈.... :smile:
  • 左左4143:拿到的被选择照片数组里可以获取每一张照片的名称吗?
    伯牙呀:知道怎么获取到照片名字了吗?
    左左4143:@半尺尘 好的 谢谢
    半尺尘:@Elephan_z 你好,其实我还没尝试去获取过照片名字.... 你自己试试吧.... :pensive:
  • coderSuper:如果只想选择视频,选择视频界面貌似没有勾选按钮,点击视频也是提示只能选照片
    半尺尘:@超爱月 你好,视频一次只能选择一个,在视频预览页面才能选择,详见Demo.
  • 763286777db0:选择一张照片 预览 取消选择 只是存在 作者在预览控制器里边okButtonClick方法里边 if (_tzImagePickerVc.selectedModels.count == 0) {
    [self.navigationController popViewControllerAnimated:YES];
    return;
    // TZAssetModel *model = _models[_currentIndex];
    // [_tzImagePickerVc.selectedModels addObject:model];
    }
    如果选中的model为0 默认加入一张 此时所在位置的model 等于没有从数组里边删除。不会意图在哪里。 由于时间原因,就手动做了简单的修改 ,为0就回到选择控制器。 另外预览控制器如果存在滑动返回上个页面的效果 ,作者没有刷新页面 导致不同步。所以我就在viewwillapper加入了 [self.collectionView reloadData];
    [self refreshBottomToolBarStatus];
  • 72b1e4f01ff8:请问- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingVideo:(UIImage *)coverImage sourceAssets:(id)asset这里面的 [[TZImageManager manager] getVideoOutputPathWithAsset:asset completion:^(NSString *outputPath) {
    // NSLog(@"视频导出到本地完成,沙盒路径为:%@",outputPath);
    // Export completed, send video here, send by outputPath or NSData
    // 导出完成,在这里写上传代码,通过路径或者通过NSData上传

    }];拿到 asset 这个对象如何转为NSData呢
    是秋天阿:哈哈哈,好吧
    72b1e4f01ff8:@runningmanhaha videoData = [NSData dataWithContentsOfFile:outputPath];
    是秋天阿:@云梨 请问你解决上传视频的操作吗,如何转data
  • 胖纸新鴻要好好学习:iOS 9.1 拍照的时候保存照片也是会出错
    半尺尘:@胖纸新鴻要好好学习 你好,请问具体是出什么错呢?可以下载一下最新的Demo试试,这里理论上不会有问题的。。
  • f3b88f2da1d3:我把#import "TZImagePickerController.h"到我的工程中,然后相册显示出来了,但是导航栏是白色的,然后怎么设置都没有用,都不起效果
    ae4d01a800dc:pod集成的吗
  • 水晶可乐Z:iPhone4 iOS7 demo中拍照, 后再进入从相册选择后, 相册中选中的图片不对, 有空您看看
    半尺尘:@水晶可乐Z 文中有放链接噢 :https://github.com/banchichen/TZImagePickerController
  • 4cd1c2e244d0:亲 你git网址是什么,想看看代码(*^__^*) ?
    4cd1c2e244d0:@半尺尘 谢啦
    半尺尘:@sedephen 这个哈:https://github.com/banchichen/TZImagePickerController
  • 894a391de539:为什么会出现UIView+Layout.h的枚举出现重定义的报错
    半尺尘:@X聪聪 说明其他库中也有这个文件,删掉他的或者我的
  • 屮艸芔:选中9张图片后,在numberOfItemsInSection:里设置为_selectedPhotos.count,删除图片时会崩溃-[UICollectionView _endItemAnimationsWithInvalidationContext:tentativelyForReordering:]

本文标题:仿照微信的效果,实现了一个支持多选、选原图和视频的图片选择器,适

本文链接:https://www.haomeiwen.com/subject/izgfkttx.html