Balbas Code

Swiftの画面遷移後の表示まとめ

公開日: 2024-10-25 09:59:05

本日はSwiftの遷移先の画面の設定が結構あるのですが、理解できていなかったので調べてみました。
モーダル遷移には複数の種類があり、ナビゲーションコントローラー遷移では複数の種類はありませんでした。

こちらのような画面を用意しました。
testTransition

まずはモーダル遷移からまとめていきます。


 



.fullScreen


    @objc func fullScreenTransition() {
let testVC2 = TestTransitionViewController2()
testVC2.modalPresentationStyle = .fullScreen
self.present(testVC2, animated: true, completion: nil)
}

presentで画面全体を覆う遷移を行います。戻るためには明示的にdismissを呼び出す必要があります。
testTransition




.pageSheet


    @objc func pageSheetTransition() {
let testVC2 = TestTransitionViewController2()
testVC2.modalPresentationStyle = .pageSheet
self.present(testVC2, animated: true, completion: nil)
}

モーダル遷移時にiPadなど大画面でシートとして表示されます。iPhoneでは画面下から出てくるスタイルで表示されます。
testTransition


 


.formSheet


    @objc func formSheetTransition() {
let testVC2 = TestTransitionViewController2()
testVC2.modalPresentationStyle = .formSheet
self.present(testVC2, animated: true, completion: nil)
}

iPadや大画面では小さなモーダルとして中央に表示され、周囲に背景が残ります。iPhoneではページシートに近い表示になります。
testTransition


 


.overFullScreen


    @objc func overFullScreenTransition() {
let testVC2 = TestTransitionViewController2()
testVC2.modalPresentationStyle = .overFullScreen
self.present(testVC2, animated: true, completion: nil)
}

fullScreenと似ていますが、背景が透明なため、前の画面が透けて見えます。
testTransition


 


.currentContext


    @objc func currentContextTransition() {
let testVC2 = TestTransitionViewController2()
testVC2.modalPresentationStyle = .currentContext
self.present(testVC2, animated: true, completion: nil)
}

現在のコンテキスト内にモーダル表示を行い、親ビューの一部が透けて見えることがあります。
testTransition


 



NavigationControllerでのプッシュ遷移


    // NavigationControllerでの標準的なプッシュ遷移
@objc func pushTransition() {
let testVC2 = TestTransitionViewController2()
navigationController?.pushViewController(testVC2, animated: true)
}

testTransition


 


NavigationControllerでナビゲーションバーを非表示にして遷移


    // NavigationControllerでナビゲーションバーを非表示にして遷移
@objc func pushWithoutNavigationBar() {
let testVC2 = TestTransitionViewController2()
navigationController?.isNavigationBarHidden = true
navigationController?.pushViewController(testVC2, animated: true)
}

testTransition



NavigationControllerでカスタムアニメーションの遷移


    // NavigationControllerでカスタムアニメーションの遷移
@objc func pushWithCustomAnimation() {
let testVC2 = TestTransitionViewController2()
let transition = CATransition()
transition.duration = 0.5
transition.type = .push
transition.subtype = .fromBottom
navigationController?.view.layer.add(transition, forKey: kCATransition)
navigationController?.pushViewController(testVC2, animated: false)
}

testTransition


上から画面が下がってくるようなアニメーションになりました。