UICollectionViewは複数のレイアウトをアニメーション付きで簡単に切り替えることができる。ただ、切り替える時のアニメーションの速度を調整する方法がなくて困っていた。これはUICollectionViewFlowLayoutだけではなく、カスタムレイアウトの時も同じ。
いろいろ調べてみたら、単純にUIViewのanimationDuration:animationsメソッド内でアニメーションを切り替えてやればよいことがわかった。
[UIView animateWithDuration:1.f animations:^{
[self.collectionView setCollectionViewLayout:self.flowLayout animated:YES];
}];
こんな感じで書くと現在のレイアウトからの切り替わる速度を調整できる。