更改后退按钮和 ToolbarItem 的颜色以适应不同的滚动状态

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

如何更改此状态下“后退”按钮和 ToolbarItem 的颜色:

并在工具栏背景显示时(即用户向下滚动时)单独更改它们的颜色:

理想情况下,我希望它们在第一个屏幕截图中为白色,在第二个屏幕截图中为默认蓝色。

这是基本代码:

var body: some View {
    NavigationView {
        //
    }
    .toolbar {
        ToolbarItem(placement: .topBarTrailing) {
            Button(action: {
                //
            }, label: {
                Image(systemName: "ellipsis")
            })
        }
    }
}
swift swiftui
1个回答
0
投票

如果您的应用程序中只有两个主题,请使用 @Environment(.colorScheme),它随 SwiftUI 一起提供...

import SwiftUI

struct ContentView: View {

    @Environment(\.colorScheme) var colorScheme

    private var isDarkMode: Bool {
        return colorScheme == .dark
    }

    var body: some View {
        NavigationStack {
            VStack {
                Text("Hello, Stackoverflow!")
                    .font(.title)
                    .foregroundColor(isDarkMode ? .red : .blue)
            }
            .toolbar {
                ToolbarItem(placement: .principal) {
                    Text(isDarkMode ? "Dark mode" : "Light mode")
                        .font(.headline)
                        .foregroundColor(isDarkMode ? .red : .blue)
                }
                ToolbarItem(placement: .navigationBarTrailing) {
                    Button {
                        // Action to perform
                        print("Button was tapped")
                    } label: {
                        Image(systemName: "heart.fill")
                            .font(.headline)
                            .foregroundColor(isDarkMode ? .red : .blue)
                    }
                }
            }
        }
    }
}

#Preview {
    NavigationStack {
        ContentView()
    }
}

是的,如果最低应用程序版本是 iOS 16,请使用 NavigationStack 而不是 NavigationView;如果较低,请使用 NavigationView...

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