我正在从URL URL URL中显示图像。我试图创建一个新的线程下载图像,然后在main thread
上刷新。
func asyncLoadImg(product:Product,imageView:UIImageView){
let downloadQueue = dispatch_queue_create("com.myApp.processdownload", nil)
dispatch_async(downloadQueue){
let data = NSData(contentsOfURL: NSURL(string: product.productImage)!)
var image:UIImage?
if data != nil{
image = UIImage(data: data!)
}
dispatch_async(dispatch_get_main_queue()){
imageView.image = image
}
}
}
字符串
当我试着调试它的时候,当涉及到dispatch_blog(downloadQueue)的时候,它跳出了func。有什么建议吗?Thx
8条答案
按热度按时间xytpbqjk1#
**Swift 5.0+更新代码:
字符串
现在,无论你需要什么,只要这样做就可以从服务器URL加载图像:
1.使用swift 5.0 +更新的代码使用占位符图像:UIImageView.imageFromServerURL(URLString:“here server url”,placeHolder:placeholder image in uimage format)
很简单!
wkftcu5l2#
在
Swift3
中使用extension
,要解决网络问题,建议使用NSCache
:字符串
希望有帮助!
7jmck4yq3#
根据Shobhakar Tiwari的回答,我认为在这些情况下,在错误的情况下使用默认图像通常是有用的,并且用于加载目的,所以我更新了它以包括可选的默认图像:
Swift 3
字符串
0mkxixxg4#
这个解决方案使滚动速度非常快,而无需不必要的图像更新。您必须将url属性添加到我们的cell类中:
字符串
并添加扩展名:
型
您还可以改进它,并将一些代码提取到更通用的单元格类中,即CustomCellWithImage,以使其更具可重用性。
zhte4eai5#
这段代码可能会对你有所帮助。
字符串
与此图像将下载和缓存没有滞后的表视图滚动
g52tjvyc6#
in SWIFT 4
加载没有blink
或changing images
效果的UIImageView
图像的最常见方法是使用自定义UIImageView
类,如下所示:字符串
在
UITableViewCell
中使用该类的示例如下:型
zf2sa74q7#
最好的方法之一是使用SDWebImage。
Swift示例:
字符串
目标C示例:
型
1wnzp6jl8#
从Swift 5.5开始,它就像调用这样的函数一样简单:
字符串
使用这个简单的扩展:
型
请注意,将使用
placeholder
,直到图像从网络到达。