您的位置:首页 > 移动开发 > Swift

在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

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: