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。就可以运行了。
时间: 2024-11-12 05:51:41