SwiftUI 2.0:如何使用没有标题的工具栏自定义 iOS 14 导航栏?

问题描述

我的 iOS 14 应用屏幕设置如下:

render() {
    if (process.env.NODE_ENV == 'development') {
      return (
        // do something
      )
    } else if (process.env.NODE_ENV == 'production') {
      return (
          // do something else
        )
        ....
    }

到目前为止它有效......

  • 但是我对该行有多个警告 import SwiftUI import UIKit struct MyNavigationView: View { init() { // Color Settings UINavigationBar.appearance().barTintColor = UIColor(named:"ToolbarBackgroundColor") UINavigationBar.appearance().tintColor = UIColor(named: "ToolbarForegroundColor") UINavigationBar.appearance().titleTextAttributes = [.foregroundColor: UIColor(named:"ToolbarForegroundColor")] UIToolbar.appearance().barTintColor = UIColor(named:"ToolbarBackgroundColor") UIToolbar.appearance().tintColor = UIColor(named: "ToolbarForegroundColor") } var body: some View { NavigationView { Text("Hello,SwiftUI 2.0 World!") // content .navigationBarTitledisplayMode(.inline) .navigationTitle("MyApp") // navigation bar title .toolbar(content: { // navigation bar leading item ToolbarItem(placement: .navigationBarLeading) { Text("Hi!").foregroundColor(Color("ToolbarForegroundColor")) } // navigation bar trailing item ToolbarItem(placement: .navigationBarTrailing) { vstack(content: { Text("up").foregroundColor(Color("ToolbarForegroundColor")) Text("down").foregroundColor(Color("ToolbarForegroundColor")) }) } // toolbar at the bottom of the screen ToolbarItemGroup(placement: .bottomBar) { Button(action:{ print("home") }) { Image(systemName: "house.fill") .renderingMode(.template) .foregroundColor(Color("ToolbarForegroundColor")) } Spacer() Button(action:{ print("pages") }) { Image(systemName: "square.grid.3x2") .renderingMode(.template) .foregroundColor(.white) } Spacer() Button(action:{ print("like") }) { Image(systemName: "star.fill") .renderingMode(.template) .foregroundColor(.white) } Spacer() Button(action:{ print("user") }) { Image(systemName: "person.fill") .renderingMode(.template) .foregroundColor(.white) } } }) } } } 如果我用 UINavigationBar.appearance().titleTextAttributes = [.foregroundColor: UIColor(named:"ToolbarForegroundColor")] 替换 UIColor 就像 Color 警告消失了,但我崩溃了……有什么问题?

  • 而且我也想去掉导航栏标题...这可能吗?

解决方法

我通过向导航栏标题添加默认值解决了警告:

UINavigationBar.appearance().titleTextAttributes = [.foregroundColor: UIColor(named:"ToolbarForegroundColor") ?? .white]

还在寻找如何去掉标题。

编辑:暂时使用空字符串去掉标题...