gpt4 book ai didi

ios - 图像在 ios 中滚动时波动

转载 作者:行者123 更新时间:2023-11-28 08:31:55 25 4
gpt4 key购买 nike

我正在从 url 获取图像并将其显示在 tableview 中,这成功发生了,但是当我自动滚动它并重复更改但是在我在那一点暂停几秒钟之后(大约 10 或更多,这是相当长的时间)加载正确的图像。

func load_image(urlString:String)
{
let imgURL: NSURL = NSURL(string: urlString)!
let request: NSURLRequest = NSURLRequest(URL: imgURL)

let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request){
(data, response, error) -> Void in

if (error == nil && data != nil)
{
func display_image()
{
cell.pic.image = UIImage(data: data!)
}

dispatch_async(dispatch_get_main_queue(), display_image)
}

}

task.resume()

}
load_image(urls[indexPath.row])

最佳答案

首先,我猜为什么要在 cellForRowAtIndexPath 中加载图像?您可以在 viewDidLoad 中加载它并存储在某个数组中。但是如果你需要像你现在那样做......

为了获得更好的性能,您可以使用 NSCache 来防止每次 tableview 显示您的单元格时加载图像。尝试这样的事情:

let imageCache = NSCache()
func load_image(urlString:String)
{
if let imageFromCache = imageCache.objectForKey(urlString) as? UIImage {
cell.pic.image = imageFromCache
return
}
let imgURL: NSURL = NSURL(string: urlString)!
let request: NSURLRequest = NSURLRequest(URL: imgURL)

let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request){
(data, response, error) -> Void in

if (error == nil && data != nil)
{
func display_image()
{
let imageToCache = UIImage(data: data!)
cell.pic.image = UIImage(data: data!)
imageCache.setObject(imageToCache!, forKey: urlString)
}

dispatch_async(dispatch_get_main_queue(), display_image)
}

}

task.resume()

}

关于NSCache的更多信息你可以查看documentation .

关于ios - 图像在 ios 中滚动时波动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38682052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com