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