我已经创建了一个带有AVfoundation
框架(目标C)的自定义相机,我正在使用
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
但它只是保存到默认的相机相册。我想把我的照片保存在一个自定义相册中,但是ALAssetsLibrary
或ALAssetsLibrary+CustomPhotoAlbum.h不再使用iOS8
了。我已经尝试了所有的事情,但在iOS8
中没有任何效果。
因此,以下内容不起作用:
[self.library saveImage:image toAlbum:@"CustomAlbum" withCompletionBlock:^(NSError *error) {
if (error!=nil) {
NSLog(@"Big error: %@", [error description]);
}
}];
你能帮我把照片保存到iOS8
的自定义相册吗?
非常感谢。
以下方法在ALAssetsLibrary+CustomPhotoAlbum中的iOS8
类中不起作用:
-(void)saveImage:(UIImage*)image toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock
{
//write the image data to the assets library (camera roll)
[self writeImageToSavedPhotosAlbum:image.CGImage orientation:(ALAssetOrientation)image.imageOrientation
completionBlock:^(NSURL* assetURL, NSError* error) {
//error handling
if (error!=nil) {
completionBlock(error);
return;
}
//add the asset to the custom photo album
[self addAssetURL: assetURL
toAlbum:albumName
withCompletionBlock:completionBlock];
}];
}
发布于 2015-04-18 15:42:24
我测试了一些用于创建相册的旧代码,这仍然有效。我已经为您做了一些帮助方法,所以您不必将代码块拼凑在一起。希望这能帮助你了解不同的做法。
#import "AppDelegate.h"
#import <AssetsLibrary/AssetsLibrary.h>
@interface AppDelegate()
@end
@implementation AppDelegate
static NSString * const customPhotoAlbumName = @"CustomAlbumv2";
- (void) setupPhotoAlbumNamed: (NSString*) photoAlbumName withCompletionHandler:(void(^)(ALAssetsLibrary*, ALAssetsGroup*))completion
{
ALAssetsLibrary *assetsLibrary = [[ALAssetsLibrary alloc] init];
__weak ALAssetsLibrary *weakAssetsLibrary = assetsLibrary;
[assetsLibrary addAssetsGroupAlbumWithName:photoAlbumName resultBlock:^(ALAssetsGroup *group)
{
NSLog(@"%@ Album result: %@", self, (group.editable ? @"success" : @"already existed"));
if (!group)
{
[weakAssetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAlbum usingBlock:^(ALAssetsGroup *g, BOOL *stop) {
if ([[g valueForProperty:ALAssetsGroupPropertyName] isEqualToString:customPhotoAlbumName])
{
completion(weakAssetsLibrary, g);
}
} failureBlock:^(NSError *error) {
NSLog(@"%@ An error has occured with description: %@", self, error.localizedDescription);
completion(weakAssetsLibrary, nil);
}];
}
else
{
completion(weakAssetsLibrary, group);
}
} failureBlock:^(NSError *error)
{
NSLog(@"%@ An error has occured with description: %@", self, error.localizedDescription);
completion(weakAssetsLibrary, nil);
}];
}
- (void) addImage: (UIImage*) image toAssetsLibrary: (ALAssetsLibrary*) assetsLibrary withGroup: (ALAssetsGroup*) group
{
[assetsLibrary writeImageDataToSavedPhotosAlbum:UIImagePNGRepresentation(image) metadata:nil
completionBlock:
^(NSURL *assetURL, NSError *error)
{
if (error)
{
NSLog(@"%@ An error has occured with description: %@", self, error.localizedDescription);
}
else
{
[assetsLibrary assetForURL:assetURL resultBlock:^(ALAsset *asset)
{
[group addAsset:asset];
NSLog(@"%@ Image was succesfully added!", self);
} failureBlock:^(NSError *error) {
NSLog(@"%@ An error has occured with description: %@", self, error.localizedDescription);
}];
}
}];
}
#pragma mark - UIApplicationDelegate
- (BOOL) application: (UIApplication*) application didFinishLaunchingWithOptions: (NSDictionary*) launchOptions
{
UIImage *imageToAddToAlbum = [UIImage imageNamed:@"test"];
[self setupPhotoAlbumNamed:customPhotoAlbumName withCompletionHandler:
^(ALAssetsLibrary *assetsLibrary, ALAssetsGroup *group) {
if (group)
{
[self addImage:imageToAddToAlbum toAssetsLibrary:assetsLibrary withGroup:group];
}
}];
return YES;
}
@end
https://stackoverflow.com/questions/29718902
复制相似问题