ios 相册操作 ALAssetsLibrary

原创 2016年08月29日 09:05:19

ios 相册操作 ALAssetsLibrary


热度5  评论 184
www.BkJia.Com  网友分享于:  2015-01-17 04:01:45     浏览数30170次
                     ios 相册操作 ALAssetsLibrary

1.ALAssetsLibrary 实例为我们提供了获取相册(照片app)中的图片和视频的功能。在ios8 photos framework代替了ALAssetsLibrary。

在使用ALAssetsLibrary时,我们需要申明它的实例。

ALAssetsLibrary* library = [[ALAssetsLibrary alloc] init];


2. 迭代获取相册ALAssetsGroup:

- (void)enumerateGroupsWithTypes:(ALAssetsGroupType)types
                      usingBlock:(ALAssetsLibraryGroupsEnumerationResultsBlock)enumerationBlock
                    failureBlock:(ALAssetsLibraryAccessFailureBlock)failureBlock

ALASSetsGroupType: 类型 ALAssetsGroupLibrary:从iTunes 来的相册内容(如本身自带的向日葵照片)。ALAssetsGroupAlbum:设备自身产生或从iTunes同步来的照片,但是不包括照片流跟分享流中的照片。(例如从各个软件中保存下来的图片)ALAssetsGroupEvent 相机接口事件产生的相册
ALAssetsGroupFaces 脸部相册(具体不清楚)
ALAssetsGroupSavedPhotos 相机胶卷照片
ALAssetsGroupPhotoStream 照片流
ALAssetsGroupAll 除了ALAssetsGroupLibrary上面所的内容。
ALAssetsLibraryGroupsEnumerationResultsBlock

    ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) {
    ALAssetsFilter *onlyPhotosFilter = [ALAssetsFilter allPhotos];
        [group setAssetsFilter:onlyPhotosFilter];
        if ([group numberOfAssets] > 0)
        {
            [self.imageGroup addObject:group];
        }
        else
        {
            [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
        }
    };

上面就是迭代AlAssetsGroup的block。每迭代一次就把相应的AlAssetsGroup保存在一个可变的数组之中。AlAssetsGroup中的一些属性表明了这个相册的特征。比如: 
posterImage 相册的缩略图

numberOfAssets 相册中照片的数量



valueForProperty 通过NSString获取一些属性,有以下的属性
NSString*constALAssetsGroupPropertyName;NSString*constALAssetsGroupPropertyType;NSString*constALAssetsGroupPropertyPersistentID; (唯一标识ID)NSString*constALAssetsGroupPropertyURL;(唯一标识URL

#import "AssetsViewController.h"
#import  
@interface AssetsViewController ()

@property  (nonatomic, strong)  ALAssetsLibrary *assetsLibrary;
@property  (nonatomic, strong)  UITableView *tableView;
@property  (nonatomic, strong)  NSMutableArray *imageGroup;
@end

@implementation AssetsViewController

- (ALAssetsLibrary *)assetsLibrary
{
    if (!_assetsLibrary) {
        _assetsLibrary = [[ALAssetsLibrary alloc] init];
    }
    return _assetsLibrary;
}

- (NSMutableArray *)imageGroup
{
    if (!_imageGroup) {
        _imageGroup = [[NSMutableArray alloc] initWithCapacity:0];
    }
    return _imageGroup;
}




- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    [self.imageGroup removeAllObjects];
    
    UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain];
    [self.view addSubview:tableView];
    tableView.delegate = self;
    tableView.dataSource = self;
    
    ALAssetsLibraryGroupsEnumerationResultsBlock listGroupBlock = ^(ALAssetsGroup *group, BOOL *stop) {
    ALAssetsFilter *onlyPhotosFilter = [ALAssetsFilter allPhotos];
        [group setAssetsFilter:onlyPhotosFilter];
        if ([group numberOfAssets] > 0)
        {
            [self.imageGroup addObject:group];
        }
        else
        {
            [self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
        }
    };

    NSUInteger groupTypes = ALAssetsGroupAll ;
    
    [self.assetsLibrary enumerateGroupsWithTypes:groupTypes usingBlock:listGroupBlock failureBlock:^(NSError *error) {
        NSLog(@"Group not found!\n");
    }];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.imageGroup.count;
}

-  (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellName = @"name";
    UITableViewCell *cell =  [tableView dequeueReusableCellWithIdentifier:cellName];
    if (!cell) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellName];
    }
    
    ALAssetsGroup *group = [self.imageGroup objectAtIndex:indexPath.row];
    UIImage *postImage = [UIImage imageWithCGImage:[group posterImage]];
    
    cell.imageView.image =  postImage;
    cell.textLabel.text = [group valueForProperty:ALAssetsGroupPropertyName];;
    cell.detailTextLabel.text = [@(group.numberOfAssets) stringValue];
    return cell;
}

ALAssetsLibrary---保存照片到指定相册

经常我们会把程序中的照片保存到指定相册中 保存到系统相册 ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init]; [a...
  • wsxzk123
  • wsxzk123
  • 2015年03月09日 23:55
  • 2033

解决iOS8下ALAssetsLibrary创建相册的bug

说到ALAssetsLibrary,相信搞iOS开发的大都知道它,在iOS上做过相册相关功能的应该对这个都比较熟悉了,用它来操作访问相册是很方便的。但是,,,,自从iOS8发布后,ALAssetsLi...
  • u011993617
  • u011993617
  • 2015年04月03日 18:40
  • 4222

ALAssetsLibrary类实现查看相册列表,增加相册,保存图片到相册等功能

该框架下有几个类,ALAssetsLibrary,ALAssetsGroup,ALAsset,ALAssetsFilter,ALAssetRepresentation。 ALAssetsLibrar...
  • u012847940
  • u012847940
  • 2015年09月26日 22:27
  • 466

查询相册和摄像头的使用权限

参考:http://blog.csdn.net/piaodang1234/article/details/17225957 http://blog.csdn.net/kingsley_cxz/art...
  • zzfsuiye
  • zzfsuiye
  • 2013年12月10日 13:41
  • 17324

iOS --- 使用ALAssetsLibrary访问设备中的所有照片信息

ALAssetsLibrary 提供了访问iOS设备下”照片”应用下所有照片和视频的接口; 从 ALAssetsLibrary 中可读取所有的相册数据,即 ALAssetsGroup 对象列表; ...
  • icetime17
  • icetime17
  • 2015年08月30日 12:23
  • 2470

iOS --- 使用PhotoKit代替ALAssetsLibrary来管理相册资源

PhotoKit是苹果推出的用于替代ALAssetsLibrary的框架。 PhotoKit为使用照片和视频资源提供了新的API,包括由Photos app管理的iCloud Photos资产,所...
  • icetime17
  • icetime17
  • 2015年11月09日 21:20
  • 6069

iOS ALAssetsLibrary 无法取得照片流中的图片

ALAssetsLibrary 用assetForURL:resultBlock:failureBlock:failureBlock以AssetsUrl的方式去取"我的照片流"中的图片,resultB...
  • yanchen_ing
  • yanchen_ing
  • 2015年03月06日 10:35
  • 678

IOS拍照---》保存到相册----》并且获取照片的ALasset传到相册

场景:本身想把IOS拍照和相册选照片功能集成到一起,就是把拍照的相片和选相册的相片放到一个collection中,然后上传,并且拍照的照片默认在相册选照片时是选中状态的,所以需要获取拍照的照片ALas...
  • haisheng115
  • haisheng115
  • 2015年12月30日 09:12
  • 902

iOS相册访问 ALAssetsLibrary(获取到相册的图片)+ 图片格式

//通过创建ALAssetsLibrary 的实例可以访问系统Photos里的图片与视频。这个库包括了保存的图片,从iTunes导入的和从其他设备里面导入的图片,你可以访问所有的分类和保存图片视频。 ...
  • Red_coralDown
  • Red_coralDown
  • 2015年11月03日 13:24
  • 1014

关于ios9中得ALAssetsLibrary框架过时问题

用Photos框架代替。 其中:保存视频的代码:         ALAssetsLibrary *assetsLibrary=[[ALAssetsLibrary alloc]init]; ...
  • u011010305
  • u011010305
  • 2015年10月06日 16:40
  • 4888
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ios 相册操作 ALAssetsLibrary
举报原因:
原因补充:

(最多只允许输入30个字)