http://bluereader.org/article/102764087git
iOS系统提供了保存图片的方法,可是该方法有一个弊端,该方法没法指定要保存图片的相册名称。UIKIT_EXTERN void UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo);
目前不少图片相关应用都会将图片写入指定相册,下面提供简单的写入指定相册的方法。
我大概设计了这么几个接口,以下代码所示github
[STAlumbManager.h] [url] [link text]atom
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
@class UIImage; typedef void (^STAlbumSaveHandler)(UIImage *image, NSError *error); /** * @brief 将图片写入相册,使用ALAssetLibrary * * @param image 须要写入的图片 * @param album 相册名称,若是相册不存在,则新建相册 * @param completionHandler 回调 */ extern void STImageWriteToPhotosAlbum(UIImage *image, NSString *album, STAlbumSaveHandler completionHandler); @interface STAlbumManager : NSObject + (instancetype)sharedManager; /** * @brief 将图片写入相册,使用ALAssetLibrary * * @param image 须要写入的图片 * @param album 相册名称,若是相册不存在,则新建相册 * @param completionHandler 回调 */ - (void)saveImage:(UIImage *)image toAlbum:(NSString *)album completionHandler:(STAlbumSaveHandler)completionHandler; @end @interface ALAssetsLibrary (STAssetsLibrary) - (void)writeImage:(UIImage *)image toAlbum:(NSString *)album completionHandler:(STAlbumSaveHandler)completionHandler; @end |
实现文件url
[STAlumbManager.m] [url] [link text]spa
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
#import "STAlbumManager.h" #import <UIKit/UIKit.h> void STImageWriteToPhotosAlbum(UIImage *image, NSString *album, STAlbumSaveHandler completionHandler) { [[STAlbumManager sharedManager] saveImage:image toAlbum:album completionHandler:completionHandler]; } @interface STAlbumManager () @property(nonatomic, strong) ALAssetsLibrary *assetsLibrary; @end @implementation STAlbumManager static STAlbumManager *_sharedManager; + (instancetype)sharedManager { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _sharedManager = [[self alloc] init]; }); return _sharedManager; } - (instancetype)init { self = [super init]; if (self) { } return self; } - (ALAssetsLibrary *)assetsLibrary { if (!_assetsLibrary) { _assetsLibrary = [[ALAssetsLibrary alloc] init]; } return _assetsLibrary; } - (void)saveImage:(UIImage *)image toAlbum:(NSString *)album completionHandler: |