我已经在目标C中使用了SDWebImage,它对我很有用,但是现在我正在学习Swift并尝试集成最新版本的API,但我坚持每一步,因为API在Objective C中并且没有步骤提到使用Swift的API。 我阅读了文档并创建了桥头文件,并包含了如下所需的文件:
#ifndef MyProject_Bridging_Header_h
#define MyProject_Bridging_Header_h
#import <SDWebImage/UIImageView+WebCache.h>
#import "UIImageView+WebCache.h"
#endif
我已经添加了框架,并按照here所解释的那样在我的应用程序中拖动了SDWebImage项目
我真的很挣扎。请帮忙!作为参考,我添加了一个显示错误的图像!
答案 0 :(得分:23)
以下是一个应该有效的代码示例:
let block: SDWebImageCompletionBlock! = {(image: UIImage!, error: NSError!, cacheType: SDImageCacheType!, imageURL: NSURL!) -> Void in
println(self)
}
let url = NSURL(string: "http://placehold.it/350x150")
self.imageView.sd_setImageWithURL(url, completed: block)
并在您的桥接头文件中:
#import "UIImageView+WebCache.h"
所以你的桥接头文件应该可以工作,但有时候我遇到了桥接头的问题,在这种情况下我只是删除它,然后重新添加它,之后一切正常。
答案 1 :(得分:3)
最好的选择是将SDWebImage文件夹拖放到项目中。确保在需要时复制商品&#39;打勾。
制作一个Obj C桥接:文件 - &gt;新 - &gt;来源 - &gt;头文件 - &gt;命名为AppName-Bridging-Header。
添加以下内容:
#ifndef AppName_AppName_Bridging_Header_h
#define AppName_AppName_Bridging_Header_h
#import <SDWebImage/UIImageView+WebCache.h>
#import "UIImageView+WebCache.h"
#endif
or
#import "UIImageView+WebCache.h"
注意:在Swift编译器中构建设置 - 代码生成,确保下面的Objective-C桥接头构建设置具有桥接头文件的路径。 - 它类似于testSD / testSD-Bridging-Header.h或testSD-Bridging-Header.h(打开Project文件夹并找到头文件路径)
现在尝试使用此代码:
let block: SDWebImageCompletionBlock! = {(image: UIImage!, error: NSError!, cacheType: SDImageCacheType!, imageURL: NSURL!) -> Void in
println(self)
}
let url = NSURL(string: "http://arrow_upward.com/350x150")
self.imageView.sd_setImageWithURL(url, completed: block)
假设您使用UICollectionView填充Cache映像,请尝试使用此代码。
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = photoListCollectionView.dequeueReusableCellWithReuseIdentifier("scoutimagecellidentifier", forIndexPath: indexPath) as! ScoutImageCell
//Loading image from server using SDWebImage library
let thumbImageUrl = NSURL(string: self.photoPropertyArray[indexPath.row] as String)
//Image Fetching is done in background GCD thread
SDWebImageManager.sharedManager().downloadImageWithURL(thumbImageUrl, options: [],progress: nil, completed: {[weak self] (image, error, cached, finished, url) in
if let wSelf = self {
//On Main Thread
dispatch_async(dispatch_get_main_queue()){
cell.scoutimage.image = image
cell.photoloader.stopAnimating()
}
}
})
return cell
}
答案 2 :(得分:1)
swift 3.0代码
导入SDWebImage
let url = URL.init(string:"https://vignette3.wikia.nocookie.net/zelda/images/b/b1/Link_%28SSB_3DS_%26_Wii_U%29.png")
imagelogo.sd_setImage(with: url , placeholderImage: nil)