3

標準UISplitViewControllerがあり、ナビゲーションコントローラはマスターペインと詳細ペインの両方にあります。ほとんどの場合、スプリットビューコントローラのpreferredDisplayMode.allVisibleに設定されているため、マスターと詳細の両方が表示されます。UISplitViewControllerのpreferredDisplayModeを詳細ナビゲーションに設定している間に

特定のビューコントローラをディテールナビゲーションスタックにプッシュすると、ユーザーがより多くの「フルスクリーン」ビューを持つようにマスターペインを非表示にしたいと思います。これを実現するために、にを変更して、詳細ビューコントローラのviewWillAppear.primaryHiddenを変更して戻してみました。しかし、実際にはアニメーションが悪くなり、トランジションの最後にビューが正しく配置されません。

Incorrect animation

私はこれを修正する方法がわかりませんよ。私は別の時間に表示モードを変更しようとしましたが、preferredDisplayModeをアニメーションブロックに変更する呼び出しを行いました(とにかく暗黙のうちにアニメートされていますが)。アニメーションブロックでは少し良く見え、ビューは正しく配置されますが、アニメーションはまだまだ奇妙で躍動的です。

アニメーションを修正して私が探している外観を得るにはどうすればいいですか?

私はこの問題を示すためにminimal sample projectをまとめました。ディテール・ビュー・コントローラーの「プッシュ」ボタンをクリックするだけで、スプリット・ビュー・コントローラーを再構成するビュー・コントローラーが表示されます。

答えて

0

DetailViewControllerでprepareForSegueを試してみてください。これにより、UISplitViewController.preferredDisplayStyleが、の前にFullscreenViewControllerを表示し、よりスムーズなアニメーションになります。

はストーリーボードでは、DetailViewControllerに続いてFullscreenViewControllerに「プッシュ」ボタンからショーのセグエを選択し、それは(私は常に先のViewControllerの名前を使用します。)識別子です設定:については

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "FullscreenViewController" { 
     self.splitViewController?.preferredDisplayMode = .primaryHidden 
    } 
} 

クイックフィックスDetailViewControllerに '背中' をナビゲートするとき、私はDetailViewControllerにviewWillAppear

self.splitViewController?.preferredDisplayMode = .allVisible 

を追加しました。私は通常、ビューコントローラ間でデータを渡すためにデリゲートを使用し、そこに表示モードを設定します。希望が役立ちます。

関連する問題