セカンダリ (詳細) VC が UICollectionViewController である UISplitViewController があります。コレクション ビューのサイズとアスペクトの変更に基づいて、コレクションのセルのサイズを変更したいと考えています。UIContentContainer プロトコル メソッドをオーバーライドして、このサイズ変更をトリガーします。
// MARK: - UIContentContainer protocol methods
override
func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
{
setFlowLayoutItemSizeForViewSize(size)
collectionViewLayout.invalidateLayout()
}
これは呼び出され、デバイスが回転するときに希望どおりに機能します。ただし、このメソッドは、splitViewController?.displayModeButtonItem() によって提供されるボタンを押して、プライマリ (マスター) ビュー コントローラーを表示または折りたたむときに呼び出されません。その折りたたみは必然的にセカンダリ (詳細) ビューのサイズを変更するため、トリガーされたときに viewWillTransitionToSize... メソッドを呼び出す必要があります。
だから、2つの質問:
1) displayModeButtonItem が押されたときに実際に viewWillTransitionToSize... メソッドを呼び出す必要がありますか? もしそうなら、私はバグを見つけたようです。
2)私が見ているものが実際に正しい動作である場合、displayModeButtonItemが押されたとき、またはそのボタンの結果としてそのサイズが変更されたときに、セカンダリ(詳細)コントローラーが「知る」方法を誰かが提案できますか?押される?
ありがとう!
カール