900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > # iOS 相册图片多选以及类似微信获取相册图片并使用AFN框架上传至服务器

# iOS 相册图片多选以及类似微信获取相册图片并使用AFN框架上传至服务器

时间:2019-03-02 07:45:33

相关推荐

# iOS  相册图片多选以及类似微信获取相册图片并使用AFN框架上传至服务器

iOS 相册图片多选以及类似微信获取相册图片并使用AFN框架上传至服务器

做APP基本上都是需要从系统的相册当中获取一张或多张图片。那怎么做呢?下面我就带你来实现这个内容,第一次写。 我只是记录一下。如有写错,还请各位大神指点一二 ;

想要使用类似微信的相册功能,就必须导入框架 TZImagePickerController 。(星星特别多哈。。。。) 去 网站 搜索 TZImagePickerController 进行下载。 也可以使用cocoa pods进行下载。 如果你没有安装cocoa pods那我就推荐/jhy835239104/article/details/52655122 这篇文章,个人觉得还是很不错的。需要的朋友可以参考;

好啦,废话不多说;直接上代码;

1.

##在控制器当中添加一个UIView 和 collectionView.collectionView用来显示图片(看你需要,那就怎么添加)-(void)choosePickViewController{//创建view,添加到系统的view上面UIView *btnView = [[UIView alloc]init];btnView.frame = CGRectMake(0, self.textV.ymt_height, self.view.bounds.size.width,50);btnView.backgroundColor = [UIColor colorWithRed:232/255.0 green:233/255.0 blue:234/255.0 alpha:1];self.btnView = btnView;[self.view addSubview:btnView];//我需要点击创下面的Btn按钮来跳转相册UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];[btn setImage:[UIImage imageNamed:@"buyon_image"] forState:UIControlStateNormal];btn.frame = CGRectMake(25,5, 40 , 40);[btn addTarget:self action:@selector(choosePhoto) forControlEvents:UIControlEventTouchUpInside];[self.btnView addSubview:btn];//创建collection来装饰UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];CGFloat margin = 5; //间距CGFloat itemWH = (self.view.ymt_width - 4 * margin) / 3 -margin;layout.itemSize = CGSizeMake(itemWH, itemWH);layout.minimumInteritemSpacing = margin;layout.minimumLineSpacing = margin;layout.sectionInset = UIEdgeInsetsMake(5, 10, 5, 10);UICollectionView *collection = [[UICollectionView alloc]initWithFrame:CGRectMake(0, self.textV.ymt_height + self.btnView.ymt_height , LZQScreenW, LZQScreenH - self.textV.ymt_height - self.btnView.ymt_height) collectionViewLayout:layout];collection.backgroundColor = [UIColor colorWithRed:245/255.0 green:240/255.0 blue:245/255.0 alpha:1];collection.delegate = self;collection.dataSource = self;collection.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;self.collection = collection;[self.view addSubview:collection];[self.collection registerClass:[YMTShoppingViewCell class] forCellWithReuseIdentifier:shoppingID ];}

2.

注意 ,,,想要访问相册必须要到项目的info.plist 中添加访问权限,

* *

在监听按钮的点击的方法中

首先需要导入框架头文件#import <TZImagePickerController/TZImagePickerController.h>//参数介绍: MaxImagesCount: 最多选择多少张图片 columnNumber :最少选择几张delegate:设置代理并遵守协议 《 TZImagePickerControllerDelegate》-(void)choosePhoto {TZImagePickerController *imagePick = [[TZImagePickerController alloc]initWithMaxImagesCount:9 columnNumber:0 delegate:self pushPhotoPickerVc:YES];//在这个回调函数中获得图片 和 图片的名称 但是个人不推荐在这里拿。下面还是可以拿的到的。因为这里有肯能拿不到图片,[imagePick setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photo, NSArray *asset, BOOL isSelectOriginalPhoto) {NSLong(@"什么也不做");}];//弹出相册[self presentViewController:imagePick animated:YES completion:nil];}//当相片选取完成之后回来到这个函数//完成后获取图片- (void)imagePickerController:(TZImagePickerController *)picker didFinishPickingPhotos:(NSArray *)photos sourceAssets:(NSArray *)assets isSelectOriginalPhoto:(BOOL)isSelectOriginalPhoto {//self.photoArr 保存图片的数组// self.asseTArr 保存图片名称的数组self.photoArr = photos;//在此强调一声,我们的图片上传流程是先把图片上传至服务器,然后服务器返回给我一个url,我再把这个url当成图片的参数上传只服务器,这样才能识别; 所以不知道大家的流程是什么样的,我就把我的流程写出来; // 首先获取服务器返回的url。就在下面写出来了[self getImageUrl];//刷新collection,显示图片[self.collection reloadData];}#pragma mark ======== 获取服务器返回的url ========-(void)getImageUrl {[self.ImageURLArr removeAllObjects];//遍历保存图片的数组;for (UIImage *image in self.photoArr) {//使用AFN的post请求 [self.manager POST:@"http://baidu.lllll/App/upload.php" parameters:nilconstructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {//将图片装换成二进制数据。看你的图片是什么格式,苹果一般都是JPEG. 下面的image就是遍历出来的图片,后面的参数是缩放图片的比例,如果你的图片过大,服务器是不接收的;NSData *data = UIImageJPEGRepresentation(image, 0.5);/*参数介绍: FileData: 二进制图片 name: 图片可以什么名称上传fileName: 服务器用什么名称的文件接收mimeType:图片的类型,无非两种,jpeg 和 png 也可百度查查*/[formData appendPartWithFileData:data name:@"pic" fileName:@"123.JPEG" mimeType:@"image/jpeg"];} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {//当发送成功之后就返回图片的url,解析获取;转模型_shopModel = [YMTShopModelURL mj_objectWithKeyValues:responseObject];//这是保存服务器返回图片url 的数组;[self.ImageURLArr addObject:_shopModel.url];//最后在刷新collectionView。图片就会显示上去 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {NSLog(@"上传失败------%@",error);}];}}2.上传就差不多了;有什么疑问可以留言,我能解决的会尽量帮;demo暂时没有; 我的这个其实挺简单;只是自己看框架的时候看的头都疼了,里面的方法多不说,还需要上传视屏和音频; 后期有时间也会去研究并写出来;写的不好请指教;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。