tzios imagepickerrcontroller怎么使用

RSKImageCropViewController与TZImagePickerController - 简书
下载简书移动应用
写了6288字,被10人关注,获得了19个喜欢
RSKImageCropViewController与TZImagePickerController
1、TZImagePickerController
TZImagePickerController是一个封装好的选择相册图片的三方库,支持多选,仿微信的选择图片。可用cocoapods直接导入
使用方法:1、#import "TZImagePickerController.h"2、&TZImagePickerControllerDelegate&3、TZImagePickerController *imagePC=[[TZImagePickerController alloc]initWithMaxImagesCount:1 delegate:self];//设置多选最多支持的最大数量,设置代理[imagePC setDidFinishPickingPhotosHandle:^(NSArray*imageArray, NSArray *array) {//点击确定后回道主界面}];[self presentViewController:imagePC animated:YES completion:nil];//跳转2、RSKImageCropViewController
RSKImageCropViewController是一个用来对相片进行裁剪的三方库。可用cocoapods直接导入。1、#import "RSKImageCropper.h"2、&RSKImageCropViewControllerDelegate&3、RSKImageCropViewController *imageCropVC = [[RSKImageCropViewController alloc] initWithImage:image cropMode:RSKImageCropModeCustom];//传入图片与裁剪框的类型//RSKImageCropModeCustom-自定义//RSKImageCropModeCircle-圆形//RSKImageCropModeSquare-矩形imageCropVC.delegate =imageCropVC.dataSource=[self.navigationController pushViewController:imageCropVC animated:YES];如果cropMode为RSKImageCropModeCustom自定义类型,则需要加入RSKImageCropViewControllerDataSource进行自定义裁剪框- (CGRect)imageCropViewControllerCustomMaskRect:(RSKImageCropViewController *)controller{//返回图片的位置return CGRectMake(0, (SCREEN_HEIGHT-100)/2, SCREEN_WIDTH, 100);}- (UIBezierPath *)imageCropViewControllerCustomMaskPath:(RSKImageCropViewController *)controller{//返回裁剪框的位置UIBezierPath *path=[UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, (SCREEN_HEIGHT-100)/2, SCREEN_WIDTH, 100) cornerRadius:0];}3、TZImagePickerController与RSKImageCropViewController混合使用首先设置TZImagePickerController最大选择数为1,然后在setDidFinishPickingPhotosHandle的回调中把image传给RSKImageCropViewController即可。TZImagePickerController *imagePC=[[TZImagePickerController alloc]initWithMaxImagesCount:3 delegate:self];
[imagePC setDidFinishPickingPhotosHandle:^(NSArray*imageArray, NSArray *array) {RSKImageCropViewController *imageCropVC = [[RSKImageCropViewController alloc] initWithImage:imageArray[0] cropMode:RSKImageCropModeCustom];imageCropVC.delegate =imageCropVC.dataSource=[self.navigationController pushViewController:imageCropVC animated:YES];}];[self presentViewController:imagePC animated:YES completion:nil];
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:仿照微信的效果,实现了一个支持多选、选原图和视频的图片选择器,适配了iOS6-9系统,3行代码即可集成. - 简书
下载简书移动应用
写了1909字,被52人关注,获得了61个喜欢
仿照微信的效果,实现了一个支持多选、选原图和视频的图片选择器,适配了iOS6-9系统,3行代码即可集成.
前段时间空余时间比较多,打算尝试做一个图片选择器出来,仔细对比了很多自定义了图片选择器的应用,感觉最喜欢微信的界面效果,当然微博的功能更强大,还支持了LivePhoto,所以打算模仿微信的界面效果,瞄着微博的功能去做一个图片选择器出来。
TZImagePickerController简介
这个图片选择器还没达到我理想中的效果,但是最近工作开始忙起来了,所以有一些功能放在以后加入吧。目前这个图片选择器:
支持图片多选、选原图和视频;
支持预览图片和视频;
适配了iOS6~9;
总体上跟微信的照片选择器界面和功能都差不多一样,当然我这个弱不少...效果图如下:
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) {
[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的一个坑...)
更具体的信息大家感兴趣的话去看代码吧,如果发现了bug请提一个issue,当然最好你给顺便解决了并提一个pull request,这样最帅了对吧...代码地址:欢迎使用,觉得不错请给一个小小的star鼓励一下~
更新刚刚更新了代码,现在版本更新到了1.4.2,新增了一些新功能,比如:在照片列表页新增了拍照按钮,可以全局记录哪个相册已选中了多少张图片,预览控制器可以在外界打开。同时Demo页面也做了一些优化,可以直接删除选中的照片、可以对照片进行长按排序等。当然期间也修复了许多小bug,表现更加好了。最值得一提的是,1.4.2版本的性能大幅提升了,在我的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
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
被以下专题收入,发现更多相似内容:
分享 iOS 开发的知识,解决大家遇到的问题,讨论iOS开发的前沿,欢迎大家投稿~
· 19516人关注
专题内容主要包括OC、swift等涉及到iOS开发进阶的内容。
swift可以关注下我的另一个专题:
swift开发...
· 15384人关注
iOS,Swift,OC,架构
· 2935人关注
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
选择支付方式:仿照微信的效果,实现了一个支持多选、选原图和视频的图片选择器
招聘信息:
本文为投稿文章,作者:前段时间空余时间比较多,打算尝试做一个图片选择器出来,仔细对比了很多自定义了图片选择器的应用,感觉最喜欢微信的界面效果,当然微博的功能更强大,还支持了LivePhoto,所以打算模仿微信的界面效果,瞄着微博的功能去做一个图片选择器出来。一. TZImagePickerController简介这个图片选择器还没达到我理想中的效果,但是最近工作开始忙起来了,所以有一些功能放在以后加入吧。目前这个图片选择器:支持图片多选、选原图和视频;支持预览图片和视频;适配了iOS6~9;总体上跟微信的照片选择器界面和功能都差不多一样,当然我这个弱不少...效果图如下:TZPhotoPickerController, 照片选择控制器2.TZPhotoPreviewController. 照片预览控制器3.TZVideoPlayerControlle. 视频预览控制器对照片选择器要求不是很高的应用来说,这个图片选择器还算是够用了,这段时间考察了github上若干个支持多选的图片选择器,界面效果和功能都比这个差些,可能是有更好的我没发现吧...二. 如何集成该图片选择器支持CocoaPods, 在你的Podfile文件中加入pod 'TZImagePickerController', '~> 1.0.4'即可集成。如果你喜欢手动导入,到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&*photos,&NSArray&*assets)&{
[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等原因,这个优化就等下次有空再来研究吧...更具体的信息大家感兴趣的话去看代码吧,如果发现了bug请提一个issue,当然最好你给顺便解决了并提一个pull request,这样最帅了对吧...代码地址:欢迎使用,觉得不错请给一个小小的star鼓励一下~
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量10988点击量8409点击量6928点击量6554点击量6175点击量6105点击量5904点击量5442点击量5295
&2015 Chukong Technologies,Inc.
京公网安备89}

我要回帖

更多关于 pickercontroller 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信