您的位置:首页 > 移动开发 > IOS开发

iOS 获取系统图片

2016-04-15 14:25 387 查看
声明属性

{

    NSArray *imageArray;

   NSMutableArray *mutableArray;

   ALAssetsLibrary *library

}

@property (strong, nonatomic) NSMutableArray *dataSource;

获取系统照片

-(void)getAllPictures

{

    imageArray=[[NSArray alloc] init];

    mutableArray =[[NSMutableArray alloc]init];

    NSMutableArray* assetURLs = [[NSMutableArray alloc] init];

    library = [[ALAssetsLibrary alloc] init];

    void (^assetEnumerator)( ALAsset *, NSUInteger, BOOL *) = ^(ALAsset *result, NSUInteger index, BOOL *stop) {

        if(result != nil) {

            if([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto]) {

                [assetURLs addObject:[result valueForProperty:ALAssetPropertyURLs]];

                NSURL *url= (NSURL*) [[result defaultRepresentation]url];

                [library assetForURL:url resultBlock:^(ALAsset *asset) {

                    [mutableArray addObject:[UIImage imageWithCGImage:[[asset defaultRepresentation]fullScreenImage]]];

                    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

                    [defaults removeObjectForKey:@"dataSource"];

                    if ([mutableArray count]==count)

                    {

                        imageArray=[[NSArray alloc] initWithArray:mutableArray];

                        NSData *imageList = [NSKeyedArchiver archivedDataWithRootObject:imageArray];

                        [defaults setObject:imageList forKey:@"dataSource"];

                    }

                }failureBlock:^(NSError *error){ NSLog(@"operation was not successfull!"); } ];

            }

        }

    };

    NSMutableArray *assetGroups = [[NSMutableArray alloc] init];

    void (^ assetGroupEnumerator) ( ALAssetsGroup *, BOOL *)= ^(ALAssetsGroup *group, BOOL *stop) {

        if(group != nil) {

            [group enumerateAssetsUsingBlock:assetEnumerator];

            [assetGroups addObject:group];

            count=(int)[group numberOfAssets];

        }

    };

    assetGroups = [[NSMutableArray alloc] init];

    [library enumerateGroupsWithTypes:ALAssetsGroupAll

                           usingBlock:assetGroupEnumerator

                         failureBlock:^(NSError *error) {NSLog(@"There is an error");}];

}
设置数据源

- (void)initDataSource{

   NSArray *images = [[NSUserDefaults standardUserDefaults] objectForKey:@"dataSource"];

   self.dataSource = [NSMutableArray arrayWithArray:images];

}

*如果获取照片太多,使用GCD异步进行处理

*设置数据源后得到的数组所包含的类型是UIImage类型,可直接加在Cell上显示
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS 系统 图片