gpt4 book ai didi

swift - 用于在 UICollectionView 中下载和显示图像的 UIImageView 扩展

转载 作者:可可西里 更新时间:2023-11-01 01:35:45 26 4
gpt4 key购买 nike

我制作并扩展了 UIImageView,它允许我异步下载图像,然后根据它们的特定索引(CollectionView 中的 IndexPath)将它们分配给它们的 ImageView。效果很好,唯一的问题是:

  • 我在快速滚动和停止时仍然看到显示的错误图像。

谁能帮帮我?这是我的代码:

//UIImageView 扩展:

extension ExtendedUIImageView {

func downloadFrom(link link:String, contentMode mode: UIViewContentMode, imageIndex: Int) {

if (NSFileManager.defaultManager().fileExistsAtPath(link)) {
self.image = UIImage(contentsOfFile: link)
return
}

self.imageURL = NSURL(string: link)
let url = NSURL(string: link)
contentMode = mode

NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
guard
let httpURLResponse = response as? NSHTTPURLResponse where httpURLResponse.statusCode == 200,
let mimeType = response?.MIMEType where mimeType.hasPrefix("image"),
let data = data where error == nil,
let image = UIImage(data: data)
else { return }
dispatch_async(dispatch_get_main_queue()) { () -> Void in
if (url == self.imageURL) {
self.image = image
}
}
}).resume()
}
}

//我将像这样调用此方法:

self.previewImageView?.downloadFrom(link: localPath, contentMode: .ScaleAspectFill, imageIndex: cell.indexPath.item)

//哪里:

var previewImageView: ExtendedUIImageView?

请帮帮我:-O

最佳答案

你好~我前段时间一直在尝试做同样的事情。这就是我所做的。这对我来说很简单,而且工作正常,没有任何问题。

import Foundation
import UIKit

extension UIImageView {


//load image async from inaternet
func loadFromURL(photoUrl:String){
//NSURL
let url = NSURL(string: photoUrl)
//Request
let request = NSURLRequest(URL:url!);
//Session
let session = NSURLSession.sharedSession()
//Data task
let datatask = session.dataTaskWithRequest(request) { (data:NSData?, response:NSURLResponse?, error:NSError?) -> Void in
if error != nil {
print(error?.localizedDescription)
}
dispatch_async(dispatch_get_main_queue()) {
self.image = UIImage(data: data!)
}
}
datatask.resume()
}


}

关于swift - 用于在 UICollectionView 中下载和显示图像的 UIImageView 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37641858/

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