SwiftUI:目标 View 的导航栏没有背景并且在滚动时没有动画

标签 swiftui xcode11 swift5.1

我正在尝试使用 ScrollView 制作通向目标 View 的导航 View ,其中目标 View 的导航标题将朝着内联显示模式设置动画,或者至少滚动到导航栏本身的后面。

基本上我试图复制标准音乐应用程序的行为,特别是当你从图书馆转到歌曲时。

在那里你有源 View (库),它有自己的标题,在滚动时动画进入内联显示模式。当您点击歌曲时,您还会获得带有新标题(歌曲)的列表,该列表也会在滚动时以动画方式进入内联显示模式。

所以我有带有 NavigationBarTitle 的主 NavigationView。我移动到带有自己的 NavigationBarTitle 和一些长内容列表的 destinationView。在滚动时,主导航 View 的 NavigationBarTitle 更改为内联显示模式,但目标 View 的 NavigationBar 表现得很奇怪:它基本上是一个没有背景和动画的叠加层。

如果您将目标 View 的 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

    }
}

最佳答案

这不是您问题的完整答案,而是一种临时解决方法:根据您的喜好,在 subview 的列表中添加顶部或垂直填充。这就是我一直在做的事情,直到有更好的解决方案。

这至少会使内容在导航标题下滚动,并在标题后面呈现适当的背景。它没有漂亮的动画来缩小标题。

struct DetailedView: View {
    var body: some View {
            List(0...25) { number in
                Text("This is \(number)'th row")
            }
            .padding(.top)
            .navigationBarTitle(Text("Destination View"))
    }
}

关于SwiftUI:目标 View 的导航栏没有背景并且在滚动时没有动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57154050/

相关文章:

ios - 无法在 TextField 中键入

swift - CoreData 崩溃错误 Xcode 11 Beta、IOS 13 Beta

ios - 应用程序在 Xcode 11 上启动后立即崩溃

ios - XCUITest ios 12 开关元素值,是否开启?

swift - 如何使用 SwiftUI 在警报中使用导航

ios - 如何为 iOS 13 的 SF Symbols 设置权重?

SwiftUI iOS - 如何捕获硬件按键事件

SwiftUI 用图像包装 HStack

ios - 如何将 Storyboard 中的 socket 连接到 UITableViewCell 类 Xcode 11

SwiftUI 列表背景色