KD.*_*KD. 3 ios uicollectionview uicollectionviewcell swift
我正在从JSON响应创建一个集合视图.Json响应具有高分辨率图像和大约2000年的图像数量.由于数据来自第三方,我无法控制图像大小.
执行:
JSON示例:
{
"imagelist": [
{
"largeImage": "https://amazingphotos/01.jpg"
},
{
"largeImage": "https://amazingphotos/02.jpg"
},
}
Run Code Online (Sandbox Code Playgroud)
在UICollectionViewController中访问JSON:
Alamofire.request(.GET, dataURL)
.responseJSON { _, _, result in
if var json:JSON = JSON(result.value!){
self.imageURLs = json["imagelist"].arrayValue
self.collectionView?.reloadData()
}
}
Run Code Online (Sandbox Code Playgroud)
在cellForItemAtIndexPath中,我将URL传递给单元格而不是图像本身.
let cell = collectionView.dequeueReusableCellWithReuseIdentifier("imageCell", forIndexPath: indexPath) as! CollectionViewCell
cell.imageData = imageURLs[indexPath.row]
Run Code Online (Sandbox Code Playgroud)
在自定义Cell我只是这样做:
var imageData:SwiftyJSON.JSON?{
didSet{
self.setup()
}
}
func setup(){
if let imageURLString = self.imageData?["largeImage"]{
let imageURL = NSURL(string: imageURLString.stringValue)
self.imageThumbnail.hnk_setImageFromURL(imageURL!)
}
Run Code Online (Sandbox Code Playgroud)
问题:当我加载集合视图时,它会正确显示图像,一旦我开始滚动它就会在新单元格中显示我之前的图像几秒钟,然后刷新.
我多次使用集合视图但从未使用过如此多的数据.请指教.TIA
滚动收藏视图时所看到的是一个重复使用的单元格,其中包含上一次使用的图像.UICollectionViewCell有一个prepareForReuse功能,您可以使用该功能将任何子视图设置回默认状态.
override func prepareForReuse() {
myImageView.image = nil
super.prepareForReuse()
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2238 次 |
| 最近记录: |