导航标题显示模式可以动画化吗?

问题描述 投票:0回答:1

如何在 SwiftUI 中切换导航显示模式时实现流畅的动画?我尝试过将

navigationBarTitle
修改器与
.large
.inline
模式一起使用,当显示模式发生变化时,动画并不像我预期的那么流畅。这是我一直在使用的代码:

import SwiftUI

struct ContentView: View {
    @State private var navigationDisplayMode: NavigationBarItem.TitleDisplayMode = .large

    var body: some View {
        NavigationView {
            VStack {
                Text("Hello, SwiftUI!")
                    .navigationBarTitle("Title", displayMode: navigationDisplayMode)
                
                Button("Toggle Display Mode") {
                    withAnimation {
                        navigationDisplayMode = navigationDisplayMode == .large ? .inline : .large
                    }
                }
            }
        }
    }
}

按下按钮时,代码会在

.large
.inline
显示模式之间切换,但动画并不像预期的那么流畅。在这些导航显示模式之间转换时如何实现更流畅的动画?

swift animation swiftui navigationbar
1个回答
0
投票

这是导航标题转换的默认行为。当用户滚动浏览某些冗长的内容时,它应该与动画一起使用。然后它为内容提供空间,标题位于导航栏的中间。这是默认行为。我没有看到这个动画有任何问题。但是,如果您想在点击某个位置时实现导航栏标题与动画一起显示在顶部中间,则必须编写自己的自定义导航栏或一些模仿导航栏的 UI。 我附上了您发布的 iOS 模拟器的视频,显示了其默认行为。我希望这能让你对此有所思考。

© www.soinside.com 2019 - 2024. All rights reserved.