BBAImageView.h
6.23 KB
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
//
// BBAImageView.h
// BaiduBoxApp
//
// Created by Jingxiang Zhang on 2/3/15.
// Copyright (c) 2015 Baidu. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <BBAFoundation/BBACacheManager.h>
#import <objc/runtime.h>
#import <objc/message.h>
# if __has_include(<SDWebImage/SDWebImage.h>)
# import <SDWebImage/SDWebImage.h>
# elif __has_include(<SDWebImage.h>)
# import "SDWebImage.h"
# elif __has_include(<WebImage/WebImage.h>)
# import <WebImage/WebImage.h>
# elif __has_include(<SDWebImage/SDWebImage-umbrella.h>)
# import <SDWebImage/SDWebImage-umbrella.h>
# else
# import "WebImage.h"
# endif
# if __has_include(<FLAnimatedImage/FLAnimatedImage.h>)
# import <FLAnimatedImage/FLAnimatedImage.h>
# elif __has_include(<SDWebImage/FLAnimatedImage.h>)
# import <SDWebImage/FLAnimatedImage.h>
# else
# import "FLAnimatedImage.h"
# endif
/// 图片相关选项,可组合使用
typedef NS_ENUM(NSUInteger, BBAImageViewOption)
{
// 默认选项
BBAImageViewOptionNone = 0x01L << 0,
// 点击重新加载图片
BBAImageViewOptionReloadWhenTap = 0x01L << 1,
// 切入前台时重新加载图片
BBAImageViewOptionReloadWhenEnterForeground = 0x01L << 2,
// 指定Cache资源优先级大于默认图,避免闪现默认图
BBAImageViewOptionUseCacheFirst = 0x01L << 3,
// 指定Cache资源优先级大于默认图,避免闪现默认图 同时异步线程加载图片,避免阻碍UI线程
BBAImageViewOptionUseCacheFirstAndLoadImageInBackgroundThread = 0x01L << 4,
// 网络队列优先级低,网络请求优先级低
BBAImageViewOptionLowPriority = 0x01L << 5,
// 网络队列优先级高,网络请求优先级高
BBAImageViewOptionHighPriority = 0x01L << 6,
// 网络队列优先级高,网络队列优先级中
BBAImageViewOptionNormalPriority = 0x01L << 7,
};
/// 图像拉伸模式
typedef NS_ENUM(NSInteger, BBAImageViewContentMode)
{
/// 等比适应(默认值)
BBAImageViewContentModeScaleAspectFit = UIViewContentModeScaleAspectFit,
/// 居中对齐
BBAImageViewContentModeCenter = UIViewContentModeCenter,
/// 拉伸填充
BBAImageViewContentModeScaleToFill = UIViewContentModeScaleToFill,
/// 等比填充
BBAImageViewContentModeScaleAspectFill = UIViewContentModeScaleAspectFill,
/// 平铺模式
BBAImageViewContentModeTile = -1001,
};
/// 图片加载完成回调
typedef void(^BBAImageViewDownloadCompletedCallback)(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL);
/// 图片完成后的回调
typedef void(^BBAImageViewCompletionBlock)(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL);
/// 百度通用图片
__attribute__((deprecated("Class deprecated. Use `SDAnimatedImageView Class`")))
@interface BBAImageView : FLAnimatedImageView
/// 加载中的占位图
@property (nonatomic, strong, readonly) UIImage *defaultImage;
/// 加载失败的占位图
@property (nonatomic, strong, readonly) UIImage *failedImage;
/// 已加载的图片
@property (nonatomic, strong, readonly) UIImage *loadedImage;
/// 图片URL
@property (nonatomic, strong, readonly) NSURL *URL;
/// 当且仅当图片加载成功,而且是网络图片的时候才有imageIdentifier
@property (nonatomic, copy) NSString * imageIdentifier;
/// 下载图片
+ (void)downloadImage:(NSURL *)URL cacheMode:(BBACacheMode)cacheMode completedCallback:(BBAImageViewDownloadCompletedCallback)completedCallback options:(SDWebImageOptions)options;
/// 检查图片是否存在于缓存
+ (BOOL)isImageExistsInLocalCache:(NSURL *)URL;
/// 删除缓存中的图片
+ (void)removeImageFromCache:(NSURL *)URL;
/// 初始化图片
- (instancetype)initWithCacheMode:(BBACacheMode)cacheMode;
/// 初始化图片
- (instancetype)initWithFrame:(CGRect)frame cacheMode:(BBACacheMode)cacheMode;
/// 初始化图片
- (instancetype)initWithFrame:(CGRect)frame cacheMode:(BBACacheMode)cacheMode options:(BBAImageViewOption)options;
/// 初始化图片
- (instancetype)initWithFrame:(CGRect)frame cacheMode:(BBACacheMode)cacheMode options:(BBAImageViewOption)options contentMode:(BBAImageViewContentMode)contentMode;
/// 设置图片的URL
- (void)setImageWithURL:(NSURL *)URL;
/// 设置图片的URL
- (void)setImageWithURL:(NSURL *)URL defaultImage:(UIImage *)defaultImage;
/// 设置图片的URL
- (void)setImageWithURL:(NSURL *)URL defaultImage:(UIImage *)defaultImage failedImage:(UIImage *)failedImage;
/// 设置图片的URL
- (void)setImageWithURL:(NSURL *)URL defaultImage:(UIImage *)defaultImage defaultImageContentMode:(BBAImageViewContentMode)defaultImageContentMode failedImage:(UIImage *)failedImage failedImageContentMode:(BBAImageViewContentMode)failedImageContentMode;
/// 设置图片的URL带回调block
- (void)setImageWithURL:(NSURL *)URL completed:(BBAImageViewCompletionBlock)completedBlock;
/// 设置图片的URL带回调block
- (void)setImageWithURL:(NSURL *)URL defaultImage:(UIImage *)defaultImage completed:(BBAImageViewCompletionBlock)completedBlock;
/// 设置图片的URL带回调block
- (void)setImageWithURL:(NSURL *)URL defaultImage:(UIImage *)defaultImage failedImage:(UIImage *)failedImage completed:(BBAImageViewCompletionBlock)completedBlock;
/// 设置图片的URL带回调block
- (void)setImageWithURL:(NSURL *)URL defaultImage:(UIImage *)defaultImage defaultImageContentMode:(BBAImageViewContentMode)defaultImageContentMode failedImage:(UIImage *)failedImage failedImageContentMode:(BBAImageViewContentMode)failedImageContentMode completed:(BBAImageViewCompletionBlock)completedBlock;
/// @brief 设置图片URL及其它相关参数
/// @param URL 图片地址
/// @param headers 图片请求的 request headers
/// @param defaultImage 默认图片
/// @param defaultImageContentMode 默认图片的 contentMode
/// @param failedImage 失败图片
/// @param failedImageContentMode 失败图片的 contentMode
/// @param completedBlock 回调
/// 重新加载图片
- (void)reload;
/// 重新加载图片
- (void)reload:(BOOL)forceReload;
/// 取消图片下载任务
- (void)cancel;
@end