ios 编程--使用代码创建新的相册随加项目

2013-04-23 13:29:04|  分类: 默认分类 |举报|字号 订阅
编写ios 编程--使用代码创建新的相册,是参考http://www.touch-code-magazine.com/ios5-saving-photos-in-custom-photo-album-category-for-download/来写的。

ALAssetsLibrary+CustomPhotoAlbum.h 里的代码是:
#import <Foundation/Foundation.h>
#import <AssetsLibrary/AssetsLibrary.h>
typedef void(^SaveImageCompletion)(NSError* error);
@interface ALAssetsLibrary(CustomPhotoAlbum)
-(void)saveImage:(UIImage*)image toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock;

-(void)addAssetURL:(NSURL*)assetURL toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock;
@end


ALAssetsLibrary+CustomPhotoAlbum.m里的代码是:

#import "ALAssetsLibrary+CustomPhotoAlbum.h"

@implementation ALAssetsLibrary(CustomPhotoAlbum)

-(void)saveImage:(UIImage*)image toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock

{
    [self writeImageToSavedPhotosAlbum:image.CGImage orientation:(ALAssetOrientation)image.imageOrientation 

                        completionBlock:^(NSURL* assetURL, NSError* error) {
                          if (error!=nil) {
                              completionBlock(error);
                              return;

                          }
                          [self addAssetURL: assetURL 
                                    toAlbum:albumName 
                        withCompletionBlock:completionBlock];
                      }];
}
-(void)addAssetURL:(NSURL*)assetURL toAlbum:(NSString*)albumName withCompletionBlock:(SaveImageCompletion)completionBlock{

    __block BOOL albumWasFound = NO;
    [self enumerateGroupsWithTypes:ALAssetsGroupAlbum 

    usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
        if ([albumName compare: [group valueForProperty:ALAssetsGroupPropertyName]]==NSOrderedSame) {
                                albumWasFound = YES;
                                [self assetForURL: assetURL 
                                      resultBlock:^(ALAsset *asset) {
                                          [group addAsset: asset];
                                          completionBlock(nil);
                                      } failureBlock: completionBlock];
                                return;
                            }
                            if (group==nil && albumWasFound==NO) {
                                __weak ALAssetsLibrary* weakSelf = self;
                                [self addAssetsGroupAlbumWithName:albumName 
                                                      resultBlock:^(ALAssetsGroup *group) {
                                                          [weakSelf assetForURL: assetURL 
                                                                        resultBlock:^(ALAsset *asset) {
                                                                            [group addAsset: asset];
                                                                            completionBlock(nil);
                                                                        } failureBlock: completionBlock];
                                                      } failureBlock: completionBlock];
                                return;
                            }
                        } failureBlock: completionBlock];
}
@end 接下来,在AppDelegate.m导入RootViewController。
RootViewController.h 里的代码是:
#import <UIKit/UIKit.h>
#import <AssetsLibrary/AssetsLibrary.h>

@interface RootViewController : UIViewController <UIImagePickerControllerDelegate>

@property (strong, atomic) ALAssetsLibrary * library;

@end

在RootViewController.m里的代码是:
#import "RootViewController.h"

@interface RootViewController ()

@end

@implementation RootViewController

@synthesize library;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;


}



-(void)dealloc
{
    [library release];
    library = nil;
    [super dealloc];
}



- (void)viewDidLoad
{
    [super viewDidLoad];


    // Do any additional setup after loading the view.
    
    library = [[ALAssetsLibrary alloc] init];


    
    
    UIButton * createGroup = [UIButton buttonWithType:UIButtonTypeRoundedRect];


    createGroup.frame = CGRectMake( 20, 150, 100, 40);
    [createGroup setTitle:@"takePhoto" forState:UIControlStateNormal];


    [createGroup addTarget:self action:@selector(takePhotoClick) forControlEvents:UIControlEventTouchUpInside];


    [self.view addSubview:createGroup];
    
    
}



- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];


    // Dispose of any resources that can be recreated.
}



- (void)takePhotoClick
{
    UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];


    imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;


    imagePickerController.editing = YES;
    imagePickerController.delegate = (id)self;
    
    [self presentModalViewController:imagePickerController animated:YES];


}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
    [library saveImage:image toAlbum:@"Touch Code Magazine" withCompletionBlock:^(NSError *error) {


        if (error!=nil) {
            NSLog(@"Big error: %@", [error description]);
        }
    }];
    [picker dismissModalViewControllerAnimated:NO];


}
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [picker dismissModalViewControllerAnimated:NO];


}
@end



接下来,导入AssetsLibrary.framework。就可以运行了。
原文地址:https://www.cnblogs.com/KingQiangzi/p/4036644.html