gpt4 book ai didi

ios - 如何在 SwiftUI 中水平对齐 View 与导航栏项目

转载 作者:行者123 更新时间:2023-12-01 16:20:03 25 4
gpt4 key购买 nike

如何让 View 与导航栏项目对齐?这可以通过 view.layoutMarginsGuide 在 UIKit 应用中完成。

举个例子:

var body: some View {
NavigationView {
VStack {
Text("Lorem ipsum nunc fermentum euismod.")
.background(Color.gray)
.padding() //FIXME
.navigationBarTitle("Title")
.navigationBarItems(leading: Button("Hello"){}, trailing: Button("World"){})
Spacer()
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .topLeading) //make it fill the width
}
.navigationViewStyle(StackNavigationViewStyle())
}

这在 iPad 9.7"纵向和 iPhone 11 Pro 上给出了以下结果:

iPad screenshot iPhone screenshot

最佳答案

这不是一个完整的答案,它只解决了你问题的一小部分,但是:


有趣的是,在 iPhone 上,如果考虑字距调整,文本实际上是对齐的。这是一个很好的例子:

Example

由 native 构生成:

var body: some View {
NavigationView {
VStack(alignment: .leading) {
Text("Title.").background(Color.gray).padding(.leading)
Text("Hello.").background(Color.gray).padding(.leading)
Text("Lorem ipsum nunc fermentum euismod.").background(Color.gray).padding(.leading)
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .topLeading)
.navigationBarTitle("Title")
.navigationBarItems(leading: Button("Hello"){}, trailing: Button("World"){})
}
.navigationViewStyle(StackNavigationViewStyle())
}

如果我们放大,我们可以看到字距调整:

Kerning

事实证明,在 iPhone 上——虽然显然不是在 iPad 上——文本实际上是对齐的。请注意,H 是对齐的,T 也是对齐的:

Alignment

这并不能真正回答您的问题,因为您在 iPad 上仍然遇到该问题。但它至少确实缩小了范围。

关于ios - 如何在 SwiftUI 中水平对齐 View 与导航栏项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62748762/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com