3

補完的な質問に対する多くの回答があります。これは、インターフェイスの変更PrimaryOverLayからRegularへの移行を防ぐ方法です。Compact

func splitViewController(splitViewController: UISplitViewController, collapseSecondaryViewController secondaryViewController: UIViewController, ontoPrimaryViewController primaryViewController: UIViewController) -> Bool

私の場合、詳細ビューが縦向きに表示された iPhone 6+ を使用しています。Compactデバイスを水平 (に)に回転させたときにRegular、プライマリ ビューを非表示にしたままにします。preferredDisplayMode多くの場所でtoを設定しようとしまし.PrimaryHiddenたが、明らかな影響はありません。グーグルは何も見つかりませんでした。

4

2 に答える 2

3

さて、質問を書いた後、投稿する前に、可能な解決策につまずきました。それは、分割ビューコントローラーが参照する特性コレクションをオーバーライドすることです。

私はその考えを採用し、 をサブクラス化し、プロパティUISplitViewControllerをオーバーライドすることにしました。traitCollectionそれはトリックをしました:

final class MySplitViewController: UISplitViewController {
  var didOnce = false
  override var traitCollection: UITraitCollection {
    let old = super.traitCollection
    let change = UITraitCollection(horizontalSizeClass: .Compact)
    let new = UITraitCollection(traitsFromCollections: [old, change])
    return new
  }

明らかに、これは 1 つのデバイス用にハードコーディングされています。後で、実際に返されるものを制御するために使用できるいくつかの関数を追加します。

于 2015-10-15T14:35:45.807 に答える