http://bluereader.org/article/102764087
iOS系统提供了保存图片的方法,但是该方法有一个弊端,该方法无法指定要保存图片的相册名称。
UIKIT_EXTERN void UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo);
目前很多图片相关应用都会将图片写入指定相册,下面提供简单的写入指定相册的方法。
我大概设计了这么几个接口,如下代码所示
[STAlumbManager.h] [url] [link text]
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
|
实现文件
[STAlumbManager.m] [url] [link text]
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 *
|