gpt4 book ai didi

ios - 从循环中的 URL 下载图像以获取 Collection View

转载 作者:搜寻专家 更新时间:2023-10-31 19:38:24 25 4
gpt4 key购买 nike

我正在尝试创建图像的 Collection View 。我已经尝试了这些解决方案来下载图像:
one
two
three
还有
four

var tempObject = json["photos"]
for var i = 0; i < tempObject.count; i++
{
var tempImage = UIImage()

dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {

tempImage = UIImage(data: NSData(contentsOfURL: NSURL(string:"https://developer.apple.com/swift/images/swift-og.png")!)!)!
})

swiftImages.insert(tempImage, atIndex: i)
}

dispatch_async(dispatch_get_main_queue()) {

self.collectionView?.reloadData()
}

但我无法让它显示图像。我是 swift 网络的新手。

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) as! ImageCollectionViewCell
cell.imageView.image = swiftImages[indexPath.row]
return cell
}

最佳答案

您正在将 UIImage()(在 dispatch_async block 之前创建的)对象添加到 swiftImages 数组。请注意 dispatch_async block 会在未来某个时间执行,它不会在 var tempImage = UIImage() 行之后立即执行。从 dispatch block 中获取图像,这也是您应该将 dispatch 发送到主队列以重新加载集合的地方。像这样更改您的代码:

            var tempObject = json["photos"]
for var i = 0; i < tempObject.count; i++
{
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), {

var tempImage = UIImage(data: NSData(contentsOfURL: NSURL(string:"https://developer.apple.com/swift/images/swift-og.png")!)!)!
swiftImages.insert(tempImage, atIndex: i)
dispatch_async(dispatch_get_main_queue()) {

self.collectionView?.reloadData()
}
})
}

顺便说一句,为 Collection View 或表格 View 单元格加载图像不仅仅是阅读图像,有时您可能会使用类似 AlamofireImage 的东西。 .

关于ios - 从循环中的 URL 下载图像以获取 Collection View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35011882/

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