【发布时间】:2016-08-12 01:44:29
【问题描述】:
我的收藏视图单元格在一直滚动到底部然后返回时被修改。
在我的 viewDidLoad 中,我有一个 Parse 查询,它从数据库中获取所有值,然后从主线程调用 reloadData。
在初始加载时,可视单元格会正确显示。
但是当我向下滚动时,不可见的单元格被加载,其中 1/3 显示不正确。
然后,当我向上滚动到最初的可查看单元格时,第一个单元格显示不正确。
我的意思是在我的数据库中没有正确显示是一个对齐字段。这可以保存中心、左或右字符串。
这个值是我的图像和按钮在单元格中的对齐方式。
这是我的 cellForRow 函数。
func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell{
let cell: FeedThumbnail = collectionView.dequeueReusableCellWithReuseIdentifier("feed_cell", forIndexPath: indexPath) as! FeedThumbnail
//handle cell alignment
if(align[indexPath.row] == "left"){
//leave alignment as is for buttons
if(cell.picture.frame.origin.x == 0){
cell.picture.frame.offsetInPlace(dx: -75, dy: 0)
}
}
else if(align[indexPath.row] == "center"){
cell.holder_view.frame.offsetInPlace(dx: 105 - cell.holder_view.frame.origin.x, dy: 0)
//leave image as is
}
else if(align[indexPath.row] == "right"){
cell.holder_view.frame.offsetInPlace(dx: 220 - cell.holder_view.frame.origin.x, dy: 0)
cell.picture.frame.offsetInPlace(dx: 100 - cell.picture.frame.origin.x, dy: 0)
}
return cell
}
这是我的集合视图单元格的类
import UIKit
class FeedThumbnail: UICollectionViewCell {
@IBOutlet weak var picture: UIImageView!
@IBOutlet weak var comment_btn: UIButton!
@IBOutlet weak var heart_btn: UIButton!
@IBOutlet weak var rescip_btn: UIButton!
@IBOutlet weak var og_btn: UIButton!
@IBOutlet weak var name_lbl: UIButton!
@IBOutlet weak var holder_view: UIView!
}
【问题讨论】:
-
你能发布你的
FeedThumbnail课程吗? -
按钮都在 holder_view 里面
-
我的猜测是您的单元重用工作不正常。尝试在
FeedThumbnail类中覆盖prepareForReuse并将所有帧重置为默认值。 -
将所有帧重置为默认值究竟是什么意思?
-
基本上在修改框架之前将它们设置回单元格首次加载时的状态。由于单元格被随机重用,因此位于中心的单元格可能被重用为正确的单元格。当它执行此操作时,它的框架位于中心位置,因此如果您期望它位于不同的位置,您的计算可能会关闭。
标签: ios swift uicollectionview alignment