文档章节

JFImagePickerController、多选图片

iOS赵师顺
 iOS赵师顺
发布于 2016/06/23 20:50
字数 370
阅读 10
收藏 0

1、导入框架 遵守协议,初始化数组,UICollectionView;

#import "ViewController.h"

#import "JFImagePickerController.h"

 

@interface ViewController ()<UICollectionViewDataSource,UICollectionViewDelegate,JFImagePickerDelegate>

 

@property   (nonatomic,strong)NSMutableArray *photosArray;

@property   (nonatomic,strong)UICollectionView *photosList;

@end

 

- (void)viewDidLoad {

    [super viewDidLoad];

    self.title = @"多选图片";

    

    self.extendedLayoutIncludesOpaqueBars = YES;

    self.automaticallyAdjustsScrollViewInsets = NO;

    self.edgesForExtendedLayout = UIRectEdgeAll;

    

    _photosArray = [[NSMutableArray alloc]init];

    [self createAddPhotosButton];

    [self createCollectionView];

}

- (void)createAddPhotosButton{

    UIBarButtonItem *addPhotos = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:@selector(addButton:)];

    self.navigationItem.rightBarButtonItem = addPhotos;

}

// 点击添加按钮,进入JFImagePickerController,选图片

- (void)addButton:(UIBarButtonItem *)sender{

    JFImagePickerController *picker = [[JFImagePickerController alloc] initWithRootViewController:nil];

    picker.pickerDelegate = self;

    [self presentViewController:picker animated:YES completion:nil];

}

 

- (void)createCollectionView{

    UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];

    flowLayout.minimumInteritemSpacing = 0;

    flowLayout.minimumLineSpacing = 3;

    NSInteger size = [UIScreen mainScreen].bounds.size.width/4-1;

    if (size%2!=0) {

        size-=1;

    }

    flowLayout.itemSize = CGSizeMake(size, size);

    flowLayout.sectionInset = UIEdgeInsetsMake(0, 0, 0, 0);

    

    _photosList = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:flowLayout];

    _photosList.contentInset = UIEdgeInsetsMake(64, 0, 0, 0);

    _photosList.scrollIndicatorInsets = _photosList.contentInset;

    _photosList.delegate = self;

    _photosList.dataSource = self;

    _photosList.backgroundColor = [UIColor whiteColor];

    _photosList.alwaysBounceVertical = YES;

    [self.view addSubview:_photosList];

    [_photosList registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"imagePickerCell"];

}

 

- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{

    return 1;

}

 

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{

    return _photosArray.count;

}

 

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{

    UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"imagePickerCell" forIndexPath:indexPath];

    ALAsset *asset = _photosArray[indexPath.row];

    UIImageView *imgView = (UIImageView *)[cell.contentView viewWithTag:1];

    if (!imgView) {

        imgView = [[UIImageView alloc] initWithFrame:cell.bounds];

        imgView.contentMode = UIViewContentModeScaleAspectFill;

        imgView.clipsToBounds = YES;

        imgView.tag = 1;

        [cell addSubview:imgView];

        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(preview:)];

        [cell addGestureRecognizer:tap];

    }

    cell.tag = indexPath.item;

    [[JFImageManager sharedManager] thumbWithAsset:asset resultHandler:^(UIImage *result) {

        if (cell.tag==indexPath.item) {

            imgView.image = result;

        }

    }];

    return cell;

}

 

- (void)preview:(UITapGestureRecognizer *)tap{

    UIView *temp = tap.view;

    JFImagePickerController *picker = [[JFImagePickerController alloc] initWithPreviewIndex:temp.tag];

    picker.pickerDelegate = self;

    [self presentViewController:picker animated:YES completion:nil];

}

 

 

#pragma mark - delegate 

// 选择结束后

- (void)imagePickerDidFinished:(JFImagePickerController *)picker{

    [_photosArray removeAllObjects];

    [_photosArray addObjectsFromArray:picker.assets];

    [_photosList reloadData];

    [self imagePickerDidCancel:picker];}

// 取消选择

- (void)imagePickerDidCancel:(JFImagePickerController *)picker{

    [picker dismissViewControllerAnimated:YES completion:nil];

}

© 著作权归作者所有

共有 人打赏支持
iOS赵师顺
粉丝 3
博文 74
码字总数 36150
作品 0
昌平
程序员
手机网页上做多图上传,html5原生上传,不能多选图片

用php做了个手机网站,需要实现多图上传和上传进度条功能,用html5原生方法在PC测试时多选图片多图上传都OK,但是线上,UC浏览器不能多选图片,华为自带浏览器可以实现多选图片上传,IOS暂时...

logoj
2016/09/08
919
0
Android实用视图动画及工具系列之九:漂亮的图片选择器,高性能防崩溃图片选择工具

实现效果 -------------------------------------------------------------------------------------------------------------------- 请在Github下查阅用法(最新更新和用法都在github上第一......

jaikydota163
2016/08/02
0
0
Android相册自定义--GalleryFinal

GalleryFinal简介 Android相册自定义,包括拍照、图片选择(单选/多选)和裁剪。 为什么要使用GalleryFinal? 拍照/选择图片倒立问题 市场上各种相机和图片浏览器泛滥和各种异常问题 各种手机...

彭建波
2015/10/16
4.2K
0
仿 QQ 简易图片选择器--PhotoSelect

一个仿qq 简易图片选择器 使用recyclerview 设计的一个图片列表 加载图片 用的 glide 提高图片加载效率 使用方法: 导入依赖库 photoselectorlibrary 或者直接使用 compile 'com.px:photosel...

红色shi头
2016/09/18
535
1
分享下个开源小作品AndFileManage

好吧,我是鼓起勇气才来试试发帖的,我高中学生一名,第一个这样的作品,高人们,勿喷.....给我多点成长经验..... 感觉有些代码不是很简洁,希望可以指正 代码地址:http://code.google.com/...

Lohanry
2012/08/03
490
7

没有更多内容

加载失败,请刷新页面

加载更多

一个可能的NEO链上安全随机数解决方案

0x00 困境 链上安全随机数生成应该算是一个比较蛋疼的问题,哪怕你的系统再牛逼,合约程序困在小小的虚拟机里,哪怕天大的本事也施展不开。 更悲催的是,交易执行的时候,是在每一个节点都执...

暖冰
今天
1
0
【大福利】极客时间专栏返现二维码大汇总

我已经购买了如下专栏,大家通过我的二维码你可以获得一定额度的返现! 然后,再给大家来个福利,只要你通过我的二维码购买,并且关注了【飞鱼说编程】公众号,可以加我微信或者私聊我,我再...

飞鱼说编程
今天
1
0
Spring5对比Spring3.2源码之容器的基本实现

最近看了《Spring源码深度解析》,该书是基于Spring3.2版本的,其中关于第二章容器的基本实现部分,目前spring5的实现方式已有较大改变。 Spring3.2的实现: public void testSimpleLoad(){...

Ilike_Java
今天
1
0
【王阳明心学语录】-001

1.“破山中贼易,破心中贼难。” 2.“夫万事万物之理不外于吾心。” 3.“心即理也。”“心外无理,心外无物,心外无事。” 4.“人心之得其正者即道心;道心之失其正者即人心。” 5.“无...

卯金刀GG
今天
2
0
OSChina 周三乱弹 —— 我们无法成为野兽

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ _刚刚好: 霸王洗发水这波很骚 手机党少年们想听歌,请使劲儿戳(这里) hahahahahahh @嘻酱:居然忘了喝水。 让你喝可乐的话, 你准忘不了...

小小编辑
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部