2013-08-16 1 views
17

私はページングとすべてで共通のUICollectionViewを持っています。UICollectionView最初の読み込み時にcontentSizeが間違っています。そのあとで修正してください。

まだviewDidLoad:、viewWillAppear:およびviewDidAppear:について、最初のビュー呼び出し時になぜmyCollectionView.collectionView.contentSize.widthを呼び出すときに間違ったサイズが取得されるかを調べようとしています。常に0の幅で応答します(高さは常に正しい)。ビューの連続的なリロードは、私に正しいものを取得します。

は私の最初のロードで正しい幅イベントを与える

self.collectionView.collectionViewLayout.collectionViewContentSize 

を使用してに頼っ。

まだ謎です。

+0

私はautolayoutと何か関係があると確信しています。無効にしてみてください – abbood

+0

既に無効になっています。再表示時に幅が正しいため(同じビューに戻ったときなど)、十分に速くビューをロードしていないようです。 – klauslanza

+0

あなたはこの問題の答えを見つけましたか? –

答えて

32

私はcontentSizeの幅が常にゼロだった同様の問題を見ていました。簡単な答えは...おそらくコレクションビューにはまだコンテンツがありません。それがコンテンツサイズがゼロである理由です。

私はUICollectionViewでinvalidateLayoutを呼び出した後に時々気付きましたが、私はself.collectionView.collectionViewLayout.collectionViewContentSizeself.collectionView.contentSizeと同じではないことが分かりました。ずっと私は両方のcontentSize計算が同じであることを取得するために行うために必要などのような素晴らしいヒントhere in this SO post

を見つけました検索した後

はすぐに[self.collectionView reloadData]または[self.collectionView.collectionViewLayout invalidateLayout]を呼び出した後[self.collectionView layoutIfNeeded]を呼び出すことでした。

これは、本質的に、次回のランループサイクルではなく、直ちにリロードを実行させることを強制します。

これがあなたの問題を解決することを本当に願っています。

+0

あなたは私の人生を救った。 :Dありがとう、ありがとう。 @ucangetit – iPeter

関連する問題