截至 Xcode 11.2.1,SwiftUI 中没有为 textfield 提供内置的字重修改器。
如果不使用扩展 UITextField 作为 UIViewRepresentable,我们该如何引入字重?
使用适用于SwiftUI TextField的标准字体大小选项和权重的一般方法。例如:
TextField("Name", text: $name)
.font(Font.headline.weight(.light))
可用的标准尺寸选项(从小到大):
.caption
.footnote
.subheadline
.callout
.body
.headline
.title3
.title2
.title
.largeTitle
可用的标准字重(从最轻到最重):
.ultralight
.thin
.light
.regular
.medium
.semibold
.bold
.heavy
.black
更新的答案:
Text("Bold Text").bold()
Text("**Bold Text**")
Text("*Italic Text*")
Text("***Bold Italic Text***")
import SwiftUI
struct ContentView: View {
@State var TextValue: String = "Hello"
var body: some View {
VStack {
TextField("placeholder", text: $TextValue)
.padding(.horizontal, 50)
.font(.system(size: 30, weight: .heavy, design: .default))
}
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
.font(.system(size: 30, weight: .heavy, design: .default))
是因为我们必须定义字体大小。如果我们只想遵循预定义的 .title .body 字体大小的指南,那么这种方法并不理想。 - TrevorSwiftUI支持Markdown。
在文本/字符两侧添加双星号(**),可以使其变为粗体。
Text("**This text is bold**")
为了强调文本内容,请使用下划线
Text("_This text is italic_")
.fontWeight(.black)
。 - mahanTextField("Name", text: $name)
.font(Font.body.bold())
iOS 13.0+、macOS 10.15+、tvOS 13.0+和watchOS 6.0+ 的更新方法是:
.fontWeight(.bold)
TextField
上不起作用,所以这并不是问题的真正答案。 - pawello2222fontWeight
适用于Text视图,但不适用于TextFields,因为它们不公开其标签视图。因此.font(Font.body.bold())
仍然是最简单的解决方案 :( - A.I.A.在shawnynicole的回答的基础上,您可以创建一个扩展程序:
extension View {
func bold() -> some View {
font(Font.body.bold())
}
}
并将其应用于任何视图(包括TextField
):
TextField("Text", text: $text)
.bold()
Font.headline
,覆盖了默认设置。在 iOS 16 上有.fontWeight()
,但对于 iOS 15 来说,这可能是一个合理的解决方案。 - Calin