2016-05-12 41 views
0

下面是一个uicollectionviewcell,条宽度必须根据它的右边的数字(vote count),事件I在控制台中记录它的宽度contants,你可以看到它的计算正确,但是在用户界面上,他们中的两个似乎不能很好地工作,如果我滚动collectionview多次,它将被修复,然后它将再次失败,如何正确设置视图的一个单元格中的限制?UICollectionViewCell中的自动宽度常数不起作用

enter image description here

代码太长,但我想在这里总结
1)视图 - 控制的cellForItem
cell.setup()
cell.layoutIfNeeded()
恢复单元

2) ()
setupBarWidths()

3)在设置中BardWidhts()
resetAllWitdhs - > 0
计算并设置宽度

这是正确的方法是什么?

+0

请显示您的代码? – iphonic

+0

看起来像一个细胞重复使用问题。尝试在你的单元格中实现prepareForReuse,并将约束设置为0. –

+0

添加了我的代码摘要检查请 – turushan

回答

0

这取决于你如何为你的子视图设置你的常量在uicollectionviewcell中。

如果您的电池不更新正确的约束,可能的解决方案是there

你必须为你的单杠提供单独的宽度约束,每次你重装电池设置。

“如果我滚动的CollectionView多次将固定的”当你不能正确处理约束变化,例如,你有“如果 - 否则”发生

这个问题在条款的代码,并且你不实现一个分支。

不管怎么说,这是容易得多,如果您共享提供解决您collectionView(_:cellForItemAt:)

更新:

UICollectionView内部有很多bug,所以一个可能的解决方案是重写UICollectionViewCell并插入下面的方法:

override var bounds: CGRect { 
    didSet { 
     contentView.frame = bounds 
    } 
} 

请参阅this线程获取更多信息。

+0

请添加我的代码摘要检查,我正在处理,如果其他情况下,大多数情况下,单元格不好首先初始化,然后在屏幕出现后,在屏幕上修复自身... – turushan