【SwiftUI】NavigationBarの前面にviewを表示する方法

・課題
 NavigationLinkで画面遷移すると、遷移後の画面がNavigationBarの下に配置される。
 今回のアプリでは、遷移後の画面でユーザが画像を配置し、ドラッグでその画像を自由に移動できるGestureを実装したが、NavigationBarの位置に来ると、画像をドラッグできなくなる(移動できなくなる)。

画像1

*図の説明:
  黄色:追加した画面の背景
  黄色の前方のView:上部にNavigationBarがある(つまり、被ってる)


・解決策
 よく考えると、NavigationBarを最前面にしないと、BarItemをタップできない。。。


・Work Around
(1) NavigationBarのタイトルのスタイルをinlineにして小さくする

func navigationBarTitle(_ titleKey: LocalizedStringKey, displayMode: NavigationBarItem.TitleDisplayMode) -> some View

(2) 条件に応じて、一時的にNavigationBarを非表示にする(フラグを利用)

func navigationBarHidden(_ hidden: Bool) -> some View

(3) AndroidのToastのようなUIを実装する

(4) 遷移元の画面に表示内容を実装し、NavigationLinkを経由しない


この記事が気に入ったらサポートをしてみませんか?