web-dev-qa-db-ja.com

SwiftUI:宛先ビューのナビゲーションバーに背景がなく、スクロール時にアニメーション化されない

スクロールビューで目的地ビューにつながるナビゲーションビューを作成しようとしています。目的地ビューのナビゲーションタイトルは、インライン表示モードに向かってアニメーション化するか、少なくともナビゲーションバー自体の後ろでスクロールします。

基本的に、私は標準のミュージックアプリの動作を再現しようとしています。特に、ライブラリからソングに移行するときです。

そこには、スクロール時にインライン表示モードにアニメーション化される独自のタイトルを持つソースビュー(ライブラリ)があります。曲をタップすると、新しいタイトル(曲)のリストも表示され、スクロールするとインライン表示モードになります。

だから私はNavigationBarTitleでメインのNavigationViewを持っています。独自のNavigationBarTitleとコンテンツの長いリストを含むdestinationViewに移動します。スクロールすると、メインナビゲーションビューのNavigationBarTitleはインライン表示モードに変わりますが、宛先ビューのNavigationBarは非常に奇妙な動作をします。これは基本的に、背景とアニメーションのないオーバーレイです。

また、宛先ビューのNavigationBarTitleをすべて一緒に削除すると、状況が悪化するだけです。何も入っていない別の透明なNavigationBarを追加するようです。

また、ナビゲーションバーに背景を追加しようとしましたが、ドキュメントを見回しましたが、解決策が見つかりませんでした。

私が何か間違っているのか、それともSwiftUIまたはXcodeの単なるベータバグなのかはわかりません。

import UIKit

struct ContentView: View {
    var body: some View {
        NavigationView{
            List(0..<20) { item in
                NavigationLink(destination: DetailedView()) {
                    Text("Next view")
                }
            }
            .navigationBarTitle("Source View")
        }
    }
}

struct DetailedView: View {
    var body: some View {
            List(0...25) { number in
                Text("This is \(number)'th row")
            }
            .navigationBarTitle(Text("Destination View")) 
// comment out line above to see empty frame of navigation bar

    }
}
6
Anton

これは、iOS 13.1パブリックリリース(Xcode 11のApp Storeリリース)で修正されています。

1

私は現在ベータ5を使用していますが、これはSwiftUIの継続的なバグだと思います。

SwiftUIランドマークチュートリアルを実行しているときに同じ問題に気づき、問題を簡単に再現できます。 https://imgur.com/a/aYgUUH

今のところ、すべてのコンテンツスクロールが透明なnavBarの下に表示されないようにするため、inlineautomaticに問題が発生したため、すべてのNavbarをlargeとして表示するように変換しました。

List {
    // ...
}
.navigationBarTitle(Text("MyTitle"), displayMode: .inline)
1
Cary