SwiftUI 2.0:如何使用没有标题的工具栏()自定义 iOS 14 导航栏?
Posted
技术标签:
【中文标题】SwiftUI 2.0:如何使用没有标题的工具栏()自定义 iOS 14 导航栏?【英文标题】:SwiftUI 2.0: How to customize the iOS 14 navigation bar with toolbar() without a title? 【发布时间】:2021-02-16 07:00:00 【问题描述】:我的 ios 14 应用屏幕有以下设置:
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: Color("ToolbarForegroundColor")]
警告消失了,但我遇到了崩溃……有什么问题?
而且我也想去掉导航栏标题... 可以吗?
【问题讨论】:
【参考方案1】:我通过向导航栏标题添加默认值来解决警告:
UINavigationBar.appearance().titleTextAttributes = [.foregroundColor: UIColor(named:"ToolbarForegroundColor") ?? .white]
仍在寻找如何摆脱标题。
编辑:暂时用空字符串去掉标题...
【讨论】:
以上是关于SwiftUI 2.0:如何使用没有标题的工具栏()自定义 iOS 14 导航栏?的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI 2.0 / CoreData 2021:没有错误但实体未保存
按下按钮时 SwiftUI 2.0 iOS 14 Core 数据删除实例