在IOS中创建图像文件夹

时间:2014-02-24 17:52:29

标签: ios ios7 uiimagepickercontroller objective-c++

全部,

当我的应用程序的用户拍摄照片时,它会被保存,但我希望它保存在名为“Jasons Photos”的新文件夹中,而不是通常的相机胶卷相册。

我知道名为save image:image toAlbum'Jasons Album'的完成块与completion block,但我收到错误抱怨'No visible @interface for AlAssetslibrary declares the selector 'save image to album completion block'并且它让我发疯。

我创建了@property for the ALAssets library,我在项目中加入了<AssetsLibrary>

感谢

1 个答案:

答案 0 :(得分:4)

首先需要将其写入savedPhotos,然后获取ALAsset并将其添加到新组

#import "QBViewController.h"
#import <AssetsLibrary/AssetsLibrary.h>

@implementation QBViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    ALAssetsLibrary *lib = [[ALAssetsLibrary alloc] init];
    [lib writeImageToSavedPhotosAlbum:[[UIImage imageNamed:@"polter"] CGImage] orientation:ALAssetOrientationUp completionBlock:^(NSURL *assetURL, NSError *error) {
        if(assetURL) {
            [lib assetForURL:assetURL resultBlock:^(ALAsset *asset) {
                [self addAsset:asset toGroup:@"forest" inLib:lib];
            } failureBlock:^(NSError *error) {
                NSLog(@"e: %@", error);
            }];
        }
        else {
            NSLog(@"e: %@", error);
        }
    }];
}

- (void) addAsset:(ALAsset*)a toGroup:(NSString*)name inLib:(ALAssetsLibrary*)lib {
    [lib enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
        if([[group valueForProperty:ALAssetsGroupPropertyName] isEqualToString:name]) {
            [group addAsset:a];
            *stop = YES;
            NSLog(@"added asset to EXISTING group");
        }
        if(!group) {
            [lib addAssetsGroupAlbumWithName:name resultBlock:^(ALAssetsGroup *group) {
                [group addAsset:a];
                NSLog(@"added asset to NEW group");
            } failureBlock:^(NSError *error) {
                NSLog(@"e: %@", error);
            }];
        }
    } failureBlock:^(NSError *error) {
        NSLog(@"e: %@", error);
    }];
}

@end