IOS多选单选相册图片

IOS多选单选相册图片

之前做项目让实现多选相册的图片,自己写了一个demo一直保存在电脑上,今天下午发现电脑128G的容量已经快没有了,准备清理电脑,所以把之前做的一些demo放在博客上,以后方便用。

1.首先准备3个图片

2.定义单元格PhoCollectionViewCell

#import <UIKit/UIKit.h>  typedef void(^SelectBtnClickBlock) (BOOL isSelect);  @interface PhoCollectionViewCell : UICollectionViewCell  @property (weak ,nonatomic)  IBOutlet  UIImageView *  imageView;  @property (weak ,nonatomic)  IBOutlet  UIImageView *  selectImageView;  @property (nonatomic,copy) SelectBtnClickBlock selectBtnClickBlock;  - (IBAction)selectBtnClick:(id)sender;  @property (weak, nonatomic) IBOutlet UIButton *selectBtn;  @end

#import "PhoCollectionViewCell.h"  @implementation PhoCollectionViewCell  - (void)awakeFromNib {     // Initialization code      }  - (IBAction)selectBtnClick:(id)sender {     UIButton *btn=(UIButton *)sender;      btn.selected=!btn.selected;     NSLog(@"%@",@"aaaa");       _selectBtnClickBlock(btn.selected); } @end

3.创建相片Model

#import <Foundation/Foundation.h> #import <AssetsLibrary/ALAssetsLibrary.h>  @interface PhoModel : NSObject  @property(nonatomic,strong) ALAsset *asset; @property (nonatomic,assign) BOOL isSelected; @end

#import "PhoModel.h"  @implementation PhoModel  @end

4.获取相册图片显示图片

#import "ViewController.h" #import <AssetsLibrary/AssetsLibrary.h>  #import "AppDelegate.h" #import "PhoModel.h" #import "PhoCollectionViewCell.h"  #define ApplicationDelegate ((AppDelegate *)[UIApplication sharedApplication].delegate)  static NSInteger count = 0;  @interface ViewController () {     NSMutableArray *mutableAssets; } @property (weak, nonatomic) IBOutlet UICollectionView *collectionView;  @end  @implementation ViewController  - (void)viewDidLoad {     [super viewDidLoad];          //获取相册中的全部照片     [self getAllPictures];     [_collectionView registerNib: [UINib nibWithNibName:@"PhoCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"CollectionViewCell"]; }  //获取相册中的全部照片 -(void)getAllPictures {     mutableAssets = [[NSMutableArray alloc]init];          NSMutableArray *assetURLDictionaries = [[NSMutableArray alloc] init];     NSMutableArray *assetGroups = [[NSMutableArray alloc] init];          __block NSMutableArray *tempMutableAssets = mutableAssets;     __block ViewController *tempSelf = self;     __block NSMutableArray *tempAssetGroups = assetGroups;          [ApplicationDelegate.library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop){         if (group != nil) {             count = [group numberOfAssets];             __block int groupNum = 0;             [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop){                 if(asset != nil) {                     ++ groupNum;                     if([[asset valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) {                         [assetURLDictionaries addObject:[asset valueForProperty:ALAssetPropertyURLs]];                         NSURL *url= (NSURL*) [[asset defaultRepresentation]url];                         NSLog(@"%@,%@",[asset valueForProperty:ALAssetPropertyDate],url);                          //                        [UIImage imageWithCGImage:[[result defaultRepresentation] fullScreenImage]];//图片 //                        [UIImage imageWithCGImage:[result thumbnail]];    //缩略图                                                  PhoModel *phoModel=[[PhoModel alloc]init];                         phoModel.asset=asset;                         phoModel.isSelected=NO;                         [tempMutableAssets addObject:phoModel];                         if (tempMutableAssets.count == groupNum) {                             [tempSelf allPhotosCollected:tempMutableAssets];                         }                     }                 }             }];             [tempAssetGroups addObject:group];         }     }failureBlock:^(NSError *error){         NSLog(@"There is an error");     }]; }  //所有asset -(void)allPhotosCollected:(NSMutableArray *)mutableAsset{     [self.collectionView reloadData]; }  #pragma mark -- UICollectionViewDataSource  - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {     CGSize itemSize = CGSizeMake(([UIScreen mainScreen].bounds.size.width-15)/4.0, ([UIScreen mainScreen].bounds.size.width-30)/4.0);     return itemSize; }  //定义展示的UICollectionViewCell的个数 -(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {     return mutableAssets.count+1; } //每个UICollectionView展示的内容 -(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {     static NSString * CellIdentifier = @"CollectionViewCell";     PhoCollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];     if (indexPath.row==0) {         cell.imageView.image = [UIImage imageNamed:@"0.png"];         cell.selectImageView.hidden=YES;         cell.selectBtnClickBlock=^(BOOL isSelect)         {             NSLog(@"cell1 block");         };         return cell;     }              PhoModel *phoModel = mutableAssets[indexPath.row-1];          cell.imageView.image = [UIImage imageWithCGImage:[phoModel.asset thumbnail]];          if (phoModel.isSelected) {         cell.selectImageView.image=[UIImage imageNamed:@"2.png"];     }     else     {         cell.selectImageView.image=[UIImage imageNamed:@"1.png"];     }     cell.selectImageView.hidden=NO;     cell.selectBtn.selected=phoModel.isSelected;     cell.selectBtnClickBlock=^(BOOL isSelect)     {         //单选多选标记 false 单选 true 多选         BOOL issangal=false;         if (issangal) {             for (PhoModel *tmpPhotoModel in mutableAssets) {                 tmpPhotoModel.isSelected = NO;             }         }         phoModel.isSelected=isSelect;         [_collectionView reloadData];     };          return cell; } - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath {     NSLog(@"%ld",indexPath.row); }  - (void)didReceiveMemoryWarning {     [super didReceiveMemoryWarning];     // Dispose of any resources that can be recreated. }  @end

5.效果

出处:http://www.cnblogs.com/5ishare/p/4832242.html

时间: 2024-10-10 23:26:39

IOS多选单选相册图片的相关文章

IOS 对相册图片进行读取、存储到指定文件夹

这个示例程序主要用到了IOS中的UIImageView.UIImagePickerViewController.UIImage.NSFileManager等知识,结合这些知识构成一个小的应用程序,主要功能是对相册图片进行读取.存储到指定文件夹.从指定文件夹读取出来.这方面的知识在正式项目中用的是比较多的.做Android开发中,经常会使用到将图片保存到SD卡和从SD卡读取图片的操作,相比于Android在这方面的操作,IOS要方便许多. 基本功能是从相册选取一张图片,选完后显示在界面的UIIma

修正iOS从照相机和相册中获取的图片 方向

修正iOS从照相机和相册中获取的图片 方向 修正iOS从照相机和相册中获取的图片 方向 使用系统相机拍照得到的图片的默认方向有时不是ImageOrientationDown,而是ImageOrientationLeft,在使用的时候会出现图片顺时针偏转90°.使用fixOrientation方法修正这个问题. - (UIImage *)fixOrientation { // No-op if the orientation is already correct if (self.imageOri

Android 仿微信朋友圈发动态功能(相册图片多选)

代码分享 代码名称: 仿微信朋友圈发动态功能(相册图片多选) 代码描述: 仿微信朋友圈发动态功能(相册图片多选) 代码托管地址: http://www.apkbus.com/android-152760-1-1.html 代码作者: 楼主 代码效果图: 本帖最后由 ^.^ 于 2014-7-8 16:23 编辑 <ignore_js_op> <ignore_js_op> <ignore_js_op> DEMO一共13个类 大约2000行代码,童鞋们耐心点看基本思路是:1

单选按钮、多选按钮用图片实现

之前一直看到有人在问,单选按钮和多选按钮怎么加样式.怎么把按钮变大?下面把我做的一个例子分享出来. 1.首先把按钮做成图片 2.html页面 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript&qu

IOS UIImagePickerController 保存图片到 相册

// 异步下载图片 dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); dispatch_group_t group =dispatch_group_create(); dispatch_group_async(group, queue, ^{ NSData *data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:ima

新浪微博客户端(30)-制作微博中的九宫格相册图片

DJStatusPhotosView.h #import <UIKit/UIKit.h> @interface DJStatusPhotosView : UIView @property (nonatomic,strong) NSArray *photos; /** 根据相册图片个数计算相册尺寸 */ + (CGSize)sizeWithCount:(NSUInteger)count; @end DJStatusPhotosView.m #import "DJStatusPhotos

使用脚本删除ios工程中未使用图片

最近在读唐巧大神的<iOS开发进阶>,学到了一个大招:使用脚本删除ios中未使用的图片(纸书上有点小问题,参考github上的issue:使用脚本删除ios中未使用图片). issue中得到的建议是:将代码保存在一个.sh文件中,在xcode里面执行shell脚本文件.看到这里,头瞬间大了,大学学的shell都还给linux老师了....还有xcode中怎么执行脚本啊??? google一下,找到mac下创建.sh文件的小白方法:教你在mac上面创建可执行脚本文件.当然还有XCode中执行脚本

ios SDImageCache 清除所有缓存图片

我觉得奇怪,用官方给的下面方法就怎么也删除不了 [[SDImageCache sharedImageCache] clearDisk]; [[SDImageCache sharedImageCache] clearMemory]; 哎,干脆自己写个,反正很简单: #pragma mark 删除全部缓存图片 - (void)removeAllCacheImage { NSFileManager *fileManager = [NSFileManager defaultManager]; if ([

ios之应用程序启动图片

ios之应用程序启动图片,布布扣,bubuko.com