Swiftui 在窗体的节内对齐文本和文本字段

Swiftui 在窗体的节内对齐文本和文本字段,swiftui,Swiftui,另一个简单的SwiftUI任务给我带来了更多的麻烦 我想不出一种方法来正确对齐文本和文本字段 所有HSTack校准似乎都不会产生可接受的结果 导入快捷键 结构签名:视图{ @State var email:String=“” var body:一些观点{ VStack{ 文本(“登录”) .font(.largeTitle) 形式{ 部分{ HStack{ 文本(“ID”) 文本字段(“电子邮件”,文本:$Email) } } } } } } 结构签名预览:PreviewProvider{ 静

另一个简单的SwiftUI任务给我带来了更多的麻烦

我想不出一种方法来正确对齐文本和文本字段

所有HSTack校准似乎都不会产生可接受的结果


导入快捷键
结构签名:视图{
@State var email:String=“”
var body:一些观点{
VStack{
文本(“登录”)
.font(.largeTitle)
形式{
部分{
HStack{
文本(“ID”)
文本字段(“电子邮件”,文本:$Email)
}
}
}
}
}
}
结构签名预览:PreviewProvider{
静态var预览:一些视图{
签名()
}
}

一种解决方案是使用另一个文本字段而不是文本:

HStack{
文本字段(“,文本:。常量(“ID”))
.fixedSize()
.已禁用(正确)
文本字段(“电子邮件”,文本:$Email)
垫片()
}

不过有点难看。

您提到尝试不同的HStack对齐,您是否尝试过
.firstTextBaseline
.lastTextBaseline
?对于我来说,这两个选项都能正确对齐文本和文本字段。所以那条线变成了

HStack(alignment: .lastTextBaseline) {

完整代码:

import SwiftUI

struct SignIn: View {
    @State var email: String = ""

    var body: some View {
        VStack {
            Text("Sign In")
                .font(.largeTitle)
            Form {
                Section {
                    HStack(alignment: .lastTextBaseline) {
                        Text("ID")
                        TextField("Email", text: $email)
                    }
                }
            }
        }
    }
}

struct SignIn_Previews: PreviewProvider {
    static var previews: some View {
        SignIn()
    }
}

我也有同样的问题,答案比我想象的要简单。我最后添加了修饰符.aspectRatio(.fit),这为我修复了它


希望这有帮助

这应该是可以接受的答案,并且它在默认字体大小下工作。但当系统字体大小小于或大于默认值时,文本和文本字段不对齐。我已经向苹果提交了关于这个的bug。