繁体   English   中英

如何在 SwiftUI 中将视图与导航栏项目水平对齐

[英]How to horizontally align views with navigation bar items in SwiftUI

如何让视图与导航栏项目对齐? 这可以通过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截图 iPhone 截图

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


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

例子

由该机构生成:

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())
}

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

字距调整

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

结盟

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM