UICollectionViewinvalidateLayout
のプロパティで呼び出すことができるメソッドを探していると思います。.collectionViewLayout
このメソッドはレイアウトを再生成します。これは、あなたの場合は を呼び出すことも意味します。-collectionView: layout: sizeForItemAtIndexPath:
これは、目的のアイテム サイズを反映する適切な場所です。ジルネは、それらの計算方法について正しい方向性を示しています。
の使用例については、invalidateLayout
こちらを参照してください。そのメソッドについては、UICollectionViewLayout のドキュメントも参照してください。
現在のレイアウトを無効にし、レイアウトの更新をトリガーします。
討論:
このメソッドをいつでも呼び出して、レイアウト情報を更新できます。このメソッドは、コレクション ビュー自体のレイアウトを無効にし、すぐに戻ります。したがって、複数のレイアウト更新をトリガーすることなく、同じコード ブロックからこのメソッドを複数回呼び出すことができます。実際のレイアウト更新は、次のビュー レイアウト更新サイクル中に発生します。
編集:
viewDidLayoutSubviews
自動レイアウト制約を含むストーリーボード コレクション ビューの場合、メソッドをオーバーライドし、このメソッドでコレクション ビュー レイアウトUIViewController
を呼び出す必要があります。invalidateLayout
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
[yourCollectionView.collectionViewLayout invalidateLayout];
}