2016-05-12 44 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