我想像在UIKit中那样在SwiftUI的NavigationBar的titleView中设置图像
type="text/css"
这就是我们在UIKit中的操作方式。
有人知道怎么做吗?
答案 0 :(得分:9)
方法如下:
View.navigationBarTitleView(_:displayMode:)
设置自定义标题视图示例代码:
struct ContentView: View {
public var body: some View {
NavigationView {
Text("Hello World")
.navigationBarTitleView(MyView())
}
}
}
答案 1 :(得分:6)
简单,只需将您的根视图添加到顶部对齐的ZStack中,然后在根视图之后添加自定义中心视图
struct CenterNavigattionBar: View {
var body: some View {
ZStack(alignment: .top){
//Root view with empty Title
NavigationView {
Text("Test Navigation")
.navigationBarTitle("",displayMode: .inline)
.navigationBarItems(leading: Text("Cancle"), trailing: Text("Done"))
}
//Your Custom Title
VStack{
Text("add title and")
.font(.headline)
Text("subtitle here")
.font(.subheadline)
}
}
}
}
图片之前
图片后
答案 2 :(得分:2)
只需使用工具栏。 您可以添加任何视图
import SwiftUI
struct HomeView: View {
// MARK: - Initializer
init() {
let appearance = UINavigationBar.appearance()
appearance.isOpaque = true
appearance.isTranslucent = false
appearance.barTintColor = UIColor(named: "background")
appearance.shadowImage = UIImage()
}
// MARK: - View
// MARK: Public
var body: some View {
NavigationView {
VStack(spacing: 20) {
Text("Hello")
Text("Navigation Bar Test")
}
.navigationBarTitleDisplayMode(.inline)
.navigationBarItems(leading: leadingBarButtonItems, trailing: trailingBarButtonItems)
.toolbar {
ToolbarItem(placement: .principal) {
VStack {
Text("Title").font(.headline)
Text("Subtitle").font(.subheadline)
}
}
}
}
}
// MARK: Private
private var leadingBarButtonItems: some View {
Button(action: {
}) {
Text("Left Button")
.font(.system(size: 12, weight: .medium))
}
}
private var trailingBarButtonItems: some View {
HStack {
Button(action: {
}) {
Text("R1\nButton")
.font(.system(size: 12, weight: .medium))
.multilineTextAlignment(.center)
}
Button(action: {
}) {
Text("R2\nButton")
.font(.system(size: 12, weight: .medium))
.multilineTextAlignment(.center)
}
}
}
}
答案 3 :(得分:0)
当前,您不能。
.navigationBarTitle()
有two overloads,采用Text
视图或符合StringProtocol
的类型。您甚至无法传递经过修改的视图,例如Text("Title").font(.body)
。这将是一个很棒的功能,我要提交功能请求:http://feedbackassistant.apple.com
答案 4 :(得分:-1)
也许这对你有用?
基本上:
使用 GeometryReader
获取屏幕宽度
有NavigationBarItems(leading: HStack {Spacer() Image("name").resizable().frame(width:..., height: ..., alignment: .center Spacer()}.frame(width:geometry.size.width)
示例代码:
struct ContentView: View {
var body: some View {
NavigationView {
GeometryReader { geometry in
Text("Hello, world!")
.padding()
.navigationTitle("test")
.navigationBarItems(leading: HStack {
Spacer()
Image("money")
.resizable()
.frame(width: 50, height: 50, alignment: .center)
Spacer()
}
.frame(width: geometry.size.width)
)
}
}
}
}
答案 5 :(得分:-2)
尝试一下...
How to put a logo in NavigationView in swiftui?
这显示了如何处理在SwiftUI中将图像添加到NavigationView的过程。希望对您有所帮助。