在Swift中,使用SDWebImage做缓存后获取缩略图的大小。
2015-10-17 17:22
441 查看
//-----------------------------------------单张缓存照片----------------------------------------------
/// 单张图片缓存
///
/// - parameter array: 加载模型数组
private func cacheWebImage(array: [StatusViewModel],finished:()->()){
//创建调度组
let group = dispatch_group_create()
//记录
var dataLenth = 0
for viewModel in array{
// .thumbnailRULs 这里面存放的是很多图片的url
let count = viewModel.thumbnailRULs?.count ?? 0
//不等于1,执行下一个循环
if count != 1{
continue
}
dispatch_group_enter(group)
SDWebImageManager.sharedManager().downloadImageWithURL(viewModel.thumbnailRULs![0], options: [], progress: nil, completed: { (image, _ , _ , _ , _ ) -> Void in
//图片缓存完成,但是图片不一定有image
if image != nil {
// 将image转成二进制数据
let data = UIImagePNGRepresentation(image)
dataLenth += data!.length
}
//dispath_group_leave 要放到闭包的最后,才能够正确的测试出。
dispatch_group_leave(group)
})
}
//调度组回到主队列
dispatch_group_notify(group,dispatch_get_main_queue()) { () -> Void in
printLog("图片缓存大小 \(dataLenth/1024)k")
//执行闭包
finished()
}
}
//-----------------------------------------取出缓存照片----------------------------------------------
//2判断图片是否已经正确的缓存Key
let key = statusViewModle!.thumbnailRULs![0].absoluteString
if let image = SDWebImageManager.sharedManager().imageCache.imageFromDiskCacheForKey(key){
size = image.size
}
//--------------------------------------------------------------简单的使用方式----------------------------------------------------------------------------
//加载零时数组 (添加尾随闭包类型)
self!.cacheWebImage(tempArray){
if max_id > 0 {
//上拉加载数据
self?.status += tempArray
}else{
//下拉加载数据
self?.status = tempArray + self!.status
}
}
/// 单张图片缓存
///
/// - parameter array: 加载模型数组
private func cacheWebImage(array: [StatusViewModel],finished:()->()){
//创建调度组
let group = dispatch_group_create()
//记录
var dataLenth = 0
for viewModel in array{
// .thumbnailRULs 这里面存放的是很多图片的url
let count = viewModel.thumbnailRULs?.count ?? 0
//不等于1,执行下一个循环
if count != 1{
continue
}
dispatch_group_enter(group)
SDWebImageManager.sharedManager().downloadImageWithURL(viewModel.thumbnailRULs![0], options: [], progress: nil, completed: { (image, _ , _ , _ , _ ) -> Void in
//图片缓存完成,但是图片不一定有image
if image != nil {
// 将image转成二进制数据
let data = UIImagePNGRepresentation(image)
dataLenth += data!.length
}
//dispath_group_leave 要放到闭包的最后,才能够正确的测试出。
dispatch_group_leave(group)
})
}
//调度组回到主队列
dispatch_group_notify(group,dispatch_get_main_queue()) { () -> Void in
printLog("图片缓存大小 \(dataLenth/1024)k")
//执行闭包
finished()
}
}
//-----------------------------------------取出缓存照片----------------------------------------------
//2判断图片是否已经正确的缓存Key
let key = statusViewModle!.thumbnailRULs![0].absoluteString
if let image = SDWebImageManager.sharedManager().imageCache.imageFromDiskCacheForKey(key){
size = image.size
}
//--------------------------------------------------------------简单的使用方式----------------------------------------------------------------------------
//加载零时数组 (添加尾随闭包类型)
self!.cacheWebImage(tempArray){
if max_id > 0 {
//上拉加载数据
self?.status += tempArray
}else{
//下拉加载数据
self?.status = tempArray + self!.status
}
}
相关文章推荐
- swift初识
- Swift 学习笔记(一)引用第三方库
- swift 自定义控件在StoryBoard(xib)里使用的属性
- Foundation对象与Core Foundation对象如何转换
- swift课程 01 swift 基础
- 自学Swift-斯坦福笔记整理(十七) Internationalization and Settings
- 自学Swift-斯坦福笔记整理(十六) Camera, Persistence, and Embed Segues
- 自学Swift-斯坦福笔记整理(十五) Modal Segues
- 自学Swift-斯坦福笔记整理(十四) Core Location and MapKit
- Swift2.0新特性
- Swift自定义数据模型及闭包的循环引用问题
- Swift动态获取成员变量及对象关联
- swift_02_基础知识
- swift基础之<二>
- swift基础知识<一>
- Swift UITableView相关功能(四)点击操作
- swift 2.0 闭包
- (Swift) UIImagePickerController照片选择器UIImagePickerControllerReferenceURL的问题
- swift 2.0 延展 Extension
- swift 2.0 协议 必须实现 和 可选实现