文档章节

JFImagePickerController、多选图片

iOS赵师顺
 iOS赵师顺
发布于 2016/06/23 20:50
字数 370
阅读 239
收藏 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
昌平
程序员
私信 提问
加载中

评论(0)

vue中单选框与多选框的实现与美化

我们在做一些页面时,可能会用到很多的单选框和复选框,但是原生的radio和checkbox前面的原型图标或方框样式不尽人意。于是,决定自己来实现单选框和复选框。我用的是vue,所以就用vue的方式...

osc_r590b6ja
2019/05/26
1
0
iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK

iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK 【1】前言: 今天给大家推荐个好用的开源框架:W...

osc_keofad7g
2018/12/11
1
0
手机网页上做多图上传,html5原生上传,不能多选图片

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

logoj
2016/09/08
1.5K
0
微信网页开发wx.chooseImage多图上传、预览(已解决)

需求: 1.调用微信jsSDK选图或者拍照(选图支持选多图) 2.选图或者拍照后提供预览,但不把图片下载到服务器 3.提交表单的时候再一并提交,把图片下载到服务器 4.支持编辑页面删除已选图片(...

yqwang75457
2018/05/08
0
0
Android相册自定义--GalleryFinal

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

彭建波
2015/10/16
4.7K
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux中实用但很小众的11个炫酷终端命令

今天给大家分享Linux总结出来的11个炫酷的Linux终端命令大全,通过今天这篇文章将向大家展示一系列的Linux命令、工具和技巧,我希望一开始就有人告诉我这些,而不是曾在我成长道路上绊住我。...

osc_50znnx42
24分钟前
5
0
GPRS(Air202) Lua开发: GPIO中断

1.原理图 2.配置GPIO5中断,上拉输入 1.点击按钮进入下降沿中断 2.松开按钮进入上升沿中断 module(...,package.seeall) --固定写法,具体百度lua文件加载(初学者不需要考虑,直接写上这句话即可...

osc_mf7xwvy6
26分钟前
18
0
相机激光标定算法:从理论到实践

点击上方“3D视觉工坊”,选择“星标” 干货第一时间送达 本文是标定系列解读第三篇,介绍了Camera-Lidar标定,通过对一些基础知识和小细节进行讨论和理论推导,给出了一些可以提升标定精度的...

osc_s2b5kacl
27分钟前
10
0
webpack4.0 把自己总结'吐'的一篇文章

上大学的时候老师讲一门语言,上来的第一节课就是配置各种环境,而通常看到那些脑袋都是一种快要炸的状态🤯。随着后来对Linux的学习之后发现,并没有那么头疼配置的东西(对于命令这么复杂...

osc_mor4smaq
28分钟前
15
0
实现一个“真”的网页

@一个“真”的网页 实现一个真的网页~ 经过了前几次的实验,相信大家已经对网页布局有了初步的了解,那么这一次就让我们来做个“真网页”吧!复制代码 文章展示页是非常非常常见的东西,几...

osc_7ekszy4a
30分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部