2016-05-12 5 views
0

以下はuicollectionviewcellです。バー幅は、右の数値(投票数)に従っている必要があります。イベントは、コンソールの幅コンテントをログに記録します。それらのうちの2つはうまくいきません。コレクションビューを数回スクロールすると、それが修正され、再び失敗するでしょう。セルのビューのコントレイントコンセントを正しく設定するにはどうしたらいいですか?UICollectionViewCellのAutolayout幅定数がうまく動作しない

enter image description here

のViewControllerのcellForItem
cell.setup()
cell.layoutIfNeeded()
戻りセル

2)で)コードが長すぎるが、私はここに
1集計しますセル内の設定()
setupBarWidths()

3)セットアップ中BardWidhts()
resetAllWitdhs - > 0
計算および設定幅

この正しい方法はありますか?

+0

コードを表示してください。 – iphonic

+0

セルの再利用の問題のように見えます。あなたのセルにprepareForReuseを実装し、制約を0に設定しようとしてください。 –

+0

は私のコードサマリーチェックを追加しました – turushan

答えて

0

これは、uicollectionviewcell内のサブビューの定数をどのように設定するかによって異なります。

あなたのセルが適切に制約を更新しない場合は、可能な解決策は、あなたがあなたの横棒のための個別の幅の制約を提供し、それをあなたのリロードセルごとに設定する必要がありますthere

です。

この問題は、「場合 - 他に」例えば、変更制約は、あなたが持って適切に処理しない場合に発生する「私は数回collectionviewをスクロールする場合はそれが修正されます」の句あなた1つのブランチを実装していません。

更新されたあなたのcollectionView(_:cellForItemAt:)

を共有している場合とにかく、それは解決策を提供するために、はるかに簡単です:

UICollectionViewは、内部の多くのバグを持っているので、一つの可能​​な解決策はUICollectionViewCellをオーバーライドして、以下の方法で挿入することです:

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

詳細については、thisスレッドを参照してください。

+0

私のコードの要約を確認してください。他にも、ほとんどの場合、セルが最初に初期化されていないと処理しています。 – turushan

関連する問題