使用AssetsLibrary.Framework创建多图片选择控制器(翻译)
2012-12-23 21:06
423 查看
系统的UIImagePickerController只能让用户选择单图片,而一般情况下,我们需要上传多张图片,这时应该可以同时选择多张图片,否则用户体验会很差。因此多图片选择器就诞生了。
在类库中,苹果为我们提供了一个AssetsLibrary.Framework的库,可以通过它获取设备里的图片和视频。在使用这个类库时,我们需要导入,且<AssetsLibrary/AssetsLibrary.h>。然后我们可以使用它来获取不同组的枚举。
1-8行,我们声明一个block,使用它来枚举所有asset group,然后将所有获取到的group放在NSMutableArray中。
代码中的ELCImagePickerController就是使用这个库来完成同时选择多张图片,当然视频也可以。
ELCImagePickerController的使用
原文连接
在类库中,苹果为我们提供了一个AssetsLibrary.Framework的库,可以通过它获取设备里的图片和视频。在使用这个类库时,我们需要导入,且<AssetsLibrary/AssetsLibrary.h>。然后我们可以使用它来获取不同组的枚举。
1 void (^assetGroupEnumerator) 2 (struct ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop{ 3 if(group != nil) { 4 [assetGroups addObject:group]; 5 NSLog(@"Number of assets in group: %d", 6 [group numberOfAssets]); 7 } 8 }; 9 10 assetGroups = [[NSMutableArray alloc] init]; 11 ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; 12 NSUInteger groupTypes = ALAssetsGroupAll; 13 14 [library enumerateGroupsWithTypes:groupTypes 15 usingBlock:assetGroupEnumerator 16 failureBlock:^(NSError *error) {NSLog(@"A problem occurred");}]; 17 18 NSLog(@"Asset groups: %@", assetGroups); 19 [library release];
1-8行,我们声明一个block,使用它来枚举所有asset group,然后将所有获取到的group放在NSMutableArray中。
1 void (^assetEnumerator) 2 (struct ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) { 3 if(result != nil) { 4 if(![assetURLDictionaries containsObject:[result valueForProperty:ALAssetPropertyURLs]]) { 5 if(![[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypeVideo]) { 6 [assetURLDictionaries addObject:[result valueForProperty:ALAssetPropertyURLs]]; 7 [assets addObject:result]; 8 } 9 } 10 } 11 }; 12 13 assets = [[NSMutableArray alloc] init]; 14 assetURLDictionaries = [[NSMutableArray alloc] init]; 15 16 NSInteger indexOfExampleGallery = NSNotFound; 17 for (ALAssetsGroup *group in assetGroups) { 18 if ([[group valueForProperty:ALAssetsGroupPropertyName] 19 isEqualToString:@"ExampleGallery"]) 20 indexOfExampleGallery = [assetGroups indexOfObject:group]; 21 } 22 23 if (indexOfExampleGallery != NSNotFound) { 24 [[assetGroups objectAtIndex:indexOfExampleGallery] 25 enumerateAssetsUsingBlock:assetEnumerator]; 26 NSLog(@"Assets %@", assets); 27 } 28 else 29 NSLog(@"Gallery 'ExampleGallery' not found on device.");
代码中的ELCImagePickerController就是使用这个库来完成同时选择多张图片,当然视频也可以。
ELCImagePickerController的使用
ELCAlbumPickerController *albumController = [[ELCAlbumPickerController alloc] initWithNibName:@"ELCAlbumPickerController" bundle:[NSBundle mainBundle]]; ELCImagePickerController *elcPicker = [[ELCImagePickerController alloc] initWithRootViewController:albumController]; [albumController setParent:elcPicker]; [elcPicker setDelegate:self]; ELCImagePickerDemoAppDelegate *app = (ELCImagePickerDemoAppDelegate *)[[UIApplication sharedApplication] delegate]; [app.viewController presentModalViewController:elcPicker animated:YES];
原文连接
相关文章推荐
- 使用AssetsLibrary.Framework创建多图片选择控制器(翻译)
- 使用AssetsLibrary.Framework创建多图片选择控制器(翻译)
- IOS使用AssetsLibrary.Framework创建多图片选择控制器
- ALAsset 循环获取图片(Assets Library Framework)
- Android使用assets实现内置图片选择
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建输出验证码图片的控制器
- Cloning UIImagePickerController using the Assets Library Framework--多选图片ios
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
- 资源文件的创建使用,选择listbox中图片名称,在picture中显示图片
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建输出验证码图片的控制器
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建输出验证码图片的控制器
- 一步一步使用Ext JS MVC与Asp.Net MVC 3开发简单的CMS后台管理系统之创建输出验证码图片的控制器
- CuteEditor使用手册(1) 创建多用户的上传图片文件夹
- Microsoft .NET Framework 2.0 Application Development Foundation 翻译系列3(第一章:第一课值类型的使用①)
- [翻译]使用XAML创建Windows Phone用户界面
- PyQt使用中遇到的若干问题(1)(版本选择,安装,显示图片,滑动条,窗口一闪而过)
- 创建和使用Android Library工程
- 你最喜欢的图片替换方法是什么,你如何选择使用?
- 使用storyboard创建导航控制器以及控制器的生命周期
- PHP 中 使用创建图片函数