为 SwiftUI 的 TextField 添加标签。

9
有没有办法在SwiftUI中为TextField添加标签?我在文档中找不到任何信息。我只看到一种方法可以添加占位符。 TextField("姓名", text: $name) 我想要添加一个标签,与Picker的样式匹配 Picker(selection: $categoryId, label: Text("类别"))
5个回答

12

1
根据文档,它应该在容器中一致地为元素设置样式,但我发现TextField与Picker或只读的LabelContent无法对齐。在TextField上使用.multilineTextAlignment(.trailing)似乎可以正确对齐它。 - TimD

7

我通过在一个HStack中包装它,成功地将其运行起来了。

HStack {
    Text("Name")

    Spacer()

    TextField("", text: $name).multilineTextAlignment(.trailing)
}

考虑为 TextField 也添加 .fixedSize() - yjsoon
3
"Spacer()在这里没有影响,您不希望TextFields作为尾随项,因为这与标准表单不匹配。" - Nitesh

4

通常的想法很简单:

HStack {
    Text("Name")
    TextField("", text: $name)
}

一切都更多地取决于您的UI设计需求。


1

这方面来自于苹果文档的记录不足。

这个标签仅在MacOS上受支持,前提条件是它必须被包含在Form元素中:

   Form {
       TextField("Channel", text: $channel)
   }

0

这可能不是最好的解决方案,但如果您为您的文本视图设置固定的框架宽度和对齐方式,它将起作用。但是,您可能需要使用不同的可访问性设置来测试此功能。

HStack {
  Text("Name").frame(width: 100, alignment: .leading)
  TextField("Name", text: $name)
}

.frame(width: 100, alignment: .leading) 移到 HStack 的末尾会不会更好呢? - theZ3r0CooL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接