博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
类似微信选择添加删除图片的demo
阅读量:4920 次
发布时间:2019-06-11

本文共 8285 字,大约阅读时间需要 27 分钟。

仿写了一个类似微信选择添加图片的demo,非常容易添加到工程当中,github地址https://github.com/wubianxiaoxian/AddPicture,主要用到了collectionview

1 //  2 //  ViewController.m  3 //  KevinCollectionView  4 //  5 //  Created by Kevin Sun on 15/12/14.  6 //  Copyright © 2015年 Kevin Sun. All rights reserved.  7 //  8   9 #import "ViewController.h" 10 #import "CollectionViewCell.h" 11 #import "KevinPreViewController.h" 12  13 static NSMutableArray *currentImages; 14  15 @interface ViewController ()
{ 16 UICollectionView *_collectionView; 17 18 } 19 20 21 @end 22 23 @implementation ViewController 24 - (void)viewDidLoad { 25 [super viewDidLoad]; 26 self.view.backgroundColor=[UIColor whiteColor]; 27 UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc]init]; 28 layout.minimumLineSpacing = 0.0f; 29 layout.minimumInteritemSpacing = 0.0f; 30 31 _collectionView=[[UICollectionView alloc]initWithFrame:self.view.frame collectionViewLayout:layout]; 32 // [_collectionView mas_makeConstraints:^(MASConstraintMaker *make) { 33 // make.left.right.top.bottom.mas_equalTo(0); 34 // }]; 35 self.navigationController.navigationBar.barTintColor=[UIColor clearColor]; 36 37 [self.view addSubview:_collectionView]; 38 _collectionView.backgroundColor=[UIColor whiteColor]; 39 _collectionView.delegate=self; 40 _collectionView.dataSource=self; 41 [_collectionView registerNib:[UINib nibWithNibName:@"CollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"CellIdentifier"]; 42 if(currentImages ==nil) 43 { 44 currentImages=[[NSMutableArray alloc] init]; 45 } 46 47 48 49 // Do any additional setup after loading the view, typically from a nib. 50 } 51 -(void)viewWillAppear:(BOOL)animated{ 52 [_collectionView reloadData]; 53 } 54 #pragma mark -UIColletionDelegate 55 //指定setion个数 56 -(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{ 57 return 1; 58 } 59 //指定section中的colletionviewCELL的个数 60 -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{ 61 return currentImages.count==0?1:currentImages.count+1; 62 } 63 //配置section中的collectionviewcell的展示 64 -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{ 65 CollectionViewCell *cell=[collectionView dequeueReusableCellWithReuseIdentifier:@"CellIdentifier" forIndexPath:indexPath]; 66 // cell.backgroundColor=[UIColor redColor]; 67 68 UIImageView *imageView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width/4-10, self.view.frame.size.width/4-10)]; 69 NSLog(@"currentImages.count %ld",currentImages.count); 70 for(UIView *view in [cell.contentView subviews]) 71 { 72 [view removeFromSuperview]; 73 } 74 if(currentImages.count==0||indexPath.row==currentImages.count) 75 { NSLog(@"我加载了设置加好图片"); 76 imageView.image=nil; 77 // [cell.contentView removeFromSuperview:imageView]; 78 imageView.image=[UIImage imageNamed:@"ico.ooopic.com.png"]; 79 } 80 else{ 81 NSLog(@"我加载了设置背景图片"); 82 83 while ([cell.contentView.subviews lastObject] != nil) { 84 [(UIView*)[cell.contentView.subviews lastObject] removeFromSuperview]; 85 } 86 imageView.image=currentImages[indexPath.row]; 87 } 88 89 // imageView.contentMode=UIViewContentModeScaleAspectFill; 90 [cell.contentView addSubview:imageView]; 91 return cell; 92 return cell; 93 94 } 95 //指定单元格的大小 96 - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{ 97 return CGSizeMake(self.view.frame.size.width/4-10, self.view.frame.size.width/4-10); 98 99 }100 ////设置每个cell上下左右相距101 //- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{102 // return UIEdgeInsetsMake(0, 0, 0, 0);103 //}104 ////设置最小行间距 也就是前一行和后一行的中间最小间隔105 //- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section{106 // return 0.0f;107 //}108 //- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section{109 // return 0.0f;110 //}111 #pragma mark 点击cell112 -(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{113 if(indexPath.row==currentImages.count)114 {115 UIActionSheet *action=[[UIActionSheet alloc] initWithTitle:@"选取照片" delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"从摄像头选取", @"从图片库选择",nil];116 [action showInView:self.view];117 }118 else119 {120 [KevinPreViewController setPreviewImage:currentImages[indexPath.row]];121 [self.navigationController pushViewController:[[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"PreviewVC"] animated:YES];122 }123 124 }125 -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{126 [picker dismissViewControllerAnimated:YES completion:nil];127 UIImage *image=[info objectForKey:UIImagePickerControllerOriginalImage];128 NSData *tempData=UIImageJPEGRepresentation(image, 0.5f);129 image=[UIImage imageWithData:tempData];130 if(currentImages ==nil)131 {132 currentImages=[[NSMutableArray alloc] init];133 }134 [currentImages addObject:image];135 [_collectionView reloadData];136 // [self saveImage:image withName:@""]137 }138 -(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{139 [picker dismissViewControllerAnimated:YES completion:nil];140 }141 -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{142 143 switch (buttonIndex) {144 case 0:145 [self openCamera];146 break;147 case 1:148 [self openLibary];149 break;150 default:151 break;152 }153 }154 -(void)openCamera{155 //UIImagePickerControllerSourceType *type=UIImagePickerControllerSourceTypeCamera;156 if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])157 {158 UIImagePickerController *picker=[[UIImagePickerController alloc] init];159 picker.delegate=self;160 picker.sourceType=UIImagePickerControllerSourceTypeCamera;161 picker.allowsEditing=YES;162 [self presentViewController:picker animated:YES completion:nil];163 164 }165 }166 -(void)openLibary{167 if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary])168 {169 UIImagePickerController *picker=[[UIImagePickerController alloc] init];170 picker.delegate=self;171 picker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;172 picker.allowsEditing=YES;173 [self presentViewController:picker animated:YES completion:nil];174 175 }176 177 }178 -(void) saveImage:(UIImage *)image withName:(NSString *)name179 {180 NSData *imageData=UIImageJPEGRepresentation(image, 0.5);181 NSString *path=[NSTemporaryDirectory() stringByAppendingPathComponent:name];182 [imageData writeToFile:path atomically:YES];183 184 }185 +(void)deleteSelectedImage:(NSInteger)index186 {187 if(currentImages!=nil)188 [currentImages removeObjectAtIndex:index];189 }190 +(void)deleteSelectedImageWithImage:(UIImage *)image{191 if(currentImages!=nil)192 [currentImages removeObject:image];193 194 }195 196 - (void)didReceiveMemoryWarning {197 [super didReceiveMemoryWarning];198 // Dispose of any resources that can be recreated.199 }200 201 @end

github地址 https://github.com/wubianxiaoxian/AddPicture

转载于:https://www.cnblogs.com/sunkaifeng/p/5070313.html

你可能感兴趣的文章
浏览器内核引擎
查看>>
SqlServer中怎么删除重复的记录(表中没有id)
查看>>
操作系统基础知识之————单线程(Thread)与多线程的区别
查看>>
PAT 1022 Digital Library[map使用]
查看>>
由于目标计算机积极拒绝,无法连接。
查看>>
hive常用命令
查看>>
Nmap使用教程 - 一
查看>>
java深入解析
查看>>
js返回上一页并刷新的几种方法
查看>>
POJ 3320 Jessica's Reading Problem 尺取法
查看>>
Unity Json 之三
查看>>
linux java -jar startup.sh
查看>>
DDD的思考
查看>>
类型转换及返回json对象的问题
查看>>
模拟题 找出不能拼凑的最小数
查看>>
ivew实现table的编辑保存追加删除
查看>>
poj 1904(强连通分量+输入输出外挂)
查看>>
Ubuntu重启关机命令使用
查看>>
第5章 不要让线程成为脱缰的野马(Keeping your Threads on Leash) ---干净的终止一个线程...
查看>>
shell $() vs ${}
查看>>