Egg*_*ead 5 url networking image ios swift
我正在尝试创建图像的集合视图。我已经试过这些解决方案,下载图像:
一个
2
3
和
4
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()
}
Run Code Online (Sandbox Code Playgroud)
但我无法让它显示图像。我是 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
}
Run Code Online (Sandbox Code Playgroud)
您正在将对象UIImage()(在块之前创建的对象dispatch_async)添加到swiftImages数组中。请注意,dispatch_async块是在将来的某个时候执行的,它不是var tempImage = UIImage()在行之后立即执行的。从调度块内部获取图像,这也是您应该将调度触发到主队列以重新加载集合的地方。像这样更改您的代码:
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()
}
})
}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,为集合视图或表视图单元格加载图像不仅仅是读取图像,您可能有时会使用AlamofireImage之类的东西。
| 归档时间: |
|
| 查看次数: |
2667 次 |
| 最近记录: |