を使用して iPad アプリを設計していUISplitViewController
ます。UISplitViewController
マスター ビュー コントローラー (つまり、左側の薄いビュー) が を介して常に表示されるように構成しsplitViewController.preferredDisplayMode = .AllVisible
ました。
詳細ビューコントローラーはUICollectionView
、iPadが縦向きか横向きかによって表示方法を変えたいと思っています。縦向きの場合は、コレクション ビューに 1 つの列のみを表示します (に似ていますUITableView
)。横向きの場合は、より多くの水平方向の画面領域を使用できるため、複数の列を表示します。そのコレクション ビューのデータ ソースとデリゲートを実装するクラス内のいくつかの条件を使用して、これを実行できると考えました。
アプリがiPhoneなどでも動作するようにサイズクラスと特性を使用したいので(同じ特性が発生した場合)、デバイスの向きを確認したくありません。
各View Controllerにプロパティがあることは知っていtraitCollection
ますが、メソッドでこのプロパティを印刷すると、iPadの最初の向きに関係なく、viewDidAppear
常にView Controllerが_UITraitNameHorizontalSizeClass = Compact, _UITraitNameVerticalSizeClass = Regular
.
iPadが縦向きの場合はこれが予想されますが、最初は横向きの場合でもこれが印刷されます-ただし、その向きは水平および垂直サイズのクラスであるRegular
と予想されます.Regular
さらに、View Controller にメソッドを実装するtraitCollectionDidChange:
と、回転時に呼び出されたり、詳細 View Controller の展開ボタンがタップされてマスター View Controller が非表示になったりしても呼び出されません (詳細 View Controller をフルスクリーンにします)。
それで、私の質問は、分割ビューコントローラー内のビューコントローラーのサイズクラス/特性の変更をどのように検出できるかです...または、これは完全に間違っていますか?
応答のサンプル コードの目的のために、アプリは iOS 9 を対象とする Swift で記述されています。
助けてくれてありがとう!