Ios 重用单元格时,自定义UICollectionViewCell的子视图显然未重新绘制
我有一个Ios 重用单元格时,自定义UICollectionViewCell的子视图显然未重新绘制,ios,uiview,ios9,uicollectionviewcell,Ios,Uiview,Ios9,Uicollectionviewcell,我有一个UICollectionViewController,它的collectionView:cellForItemAtIndexPath:返回UICollectionViewCell的子类。此单元格有两个子视图,这些子视图也配置为单元格的出口(例如,cell.dot,一个自定义的UIView,在其drawRect:中绘制彩色点) 可能发生的情况是(至少部分)在滚动集合时(即在重复使用单元格时),这些子视图不会刷新。如果我明确地将子视图标记为需要重新绘制,那么问题就会消失: override
UICollectionViewController
,它的collectionView:cellForItemAtIndexPath:
返回UICollectionViewCell
的子类。此单元格有两个子视图,这些子视图也配置为单元格的出口(例如,cell.dot
,一个自定义的UIView
,在其drawRect:
中绘制彩色点)
可能发生的情况是(至少部分)在滚动集合时(即在重复使用单元格时),这些子视图不会刷新。如果我明确地将子视图标记为需要重新绘制,那么问题就会消失:
override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
// ...
assert(cell.dot.superview == cell.contentView)
cell.dot.setNeedsDisplay() // apparently required for dot to be redrawn
return cell
}
重用的
UICollectionViewCell
s的子视图不会自动重画,这是正常行为吗?我遗漏了什么吗?Xcode 9 beta和Swift 3-同样的行为,子视图的draw(rect:)
在该子视图上直接调用setNeedsDisplay
之前不会被调用。