✔️

[SwiftUI] [iOS18+] navigationTransitionを使ってみた

2024/06/12に公開

https://developer.apple.com/documentation/swiftui/view/navigationtransition(_:)?changes=_2_1

iOS18から使えるnavigationTransitionの挙動を見てみました
navigationTransitionとは、Navigationの画面遷移時のスタイルを指定できるmodifierです

import Foundation
import SwiftUI

struct NavigationTransitionContentView: View {
    @Namespace private var namespace
    var body: some View {
        NavigationStack {
            NavigationLink {
              if #available(iOS 18.0, *) {
                NavigationTransitionDetailView()
                  .navigationTransition(.zoom(sourceID: "hoge", in: namespace))
              } else {
                NavigationTransitionDetailView()
              }
            } label: {
              if #available(iOS 18.0, *) {
                Text("Hello")
                  .matchedTransitionSource(id: "hoge", in: namespace)
              } else {
                Text("Hello")
              }
            }
        }
    }
}

struct NavigationTransitionDetailView: View {
  var body: some View {
    Text("Hello")
  }
}

#Preview {
  NavigationTransitionContentView()
}

簡単に遷移アニメーションを設定できて便利ですが、NavigationBarの表示が違和感あるので非表示で使ったほうが良さそうです
現状.zoomしかスタイルがありませんが今後バリエーションが増えることを期待してます👍

Discussion