我的目标是将navigationBaritems
(用于按钮)与nabigationBarTitle
(用于标题)嵌入在同一行。但是navigationBarTitle
是navigationBarItems.
因此,我没有使用NavigationBarTitle,而是修改了如下代码:navigationBarItems(开头:Text(“ Title”),结尾:Button(action:{}){Text(“ Button1”)})
现在标题和按钮对齐在同一行,但是问题是NavigationBarTitle
的安全区域。
我尝试过的事情
我尝试使用navigationBarHidden(true)
删除它,但是它删除了所有navigationBarItems
,并且esgesIgnoringSafeArea也删除了safearea
的{{1}}。并且还考虑过使用navigationBarItems
,但效果不好。
如何在这里仅删除NavigationBarTitle的displaymode: .inline
?
我当前的代码:
safearea
答案 0 :(得分:2)
有时候我认为SwiftUI可能不直观,但是这里有一些建议:
尝试将以下行放在.background(Color.blue)
行之后:
.navigationBarTitle("", displayMode: .inline)
将标题更改为非空字符串以查看.inline
在做什么。也尝试取出, displayMode: .inline
。这个大标题就是试图填补您在VStack上看到的所有空白空间的原因。如果您想要自定义导航栏,也可以使用.navigationBarHidden(true)
进行实验(尽管您可能不希望这样做,但是尝试仍然很有趣)。
编辑:我知道您说您尝试过其中一些方法。关键是在您在上面列出的那行。它需要修改VStack中的一个元素(如您的HStack或Spacer),所以就像我说的那样,将该行放在将HStack的背景色设置为蓝色的那一行下面。它正在尝试在您的HStack上方放置一个空标题,这是您不想要的。
答案 1 :(得分:1)
您可以尝试这样的事情:
struct ContentView: View {
var body: some View {
NavigationView {
VStack {
HStack {
Text("dd")
}
.frame(width: 500, height: 300)
.background(Color.blue)
Spacer()
}.padding(.top, 88) // <--- adjust to your needs
.navigationBarItems(leading: Text("Title"), trailing: Button(action: {
//some action
})
{
Text("Button")
}).edgesIgnoringSafeArea(.top) // <--- add this
}
}
}