如何使用字体修改器? SwiftUI 中的大写和字体大小
How to work with Font Modifiers? uppercased and font size in SwiftUI
我正在尝试使用修饰符为我的应用程序创建一些默认字体。如果有更简单的方法,我很想知道。目前,我有
struct PrimaryLabel: ViewModifier {
func body(content: Content) -> some View {
content
.font(Font.body.smallCaps())
.font(.system(size: 20, weight: .light, design: .serif)) // this is not working. Only the first one will '.font' will work
}
}
可用性:
Text("Hello World").modifier(PrimaryLabel())
有没有办法更改字体类型(例如使用 AmericanTypewriter-Light 字体)、全部大写并使用 weight: .light, design: .serif
、粗体等样式?我不想定义每一个文本。结构中的第二个 .font
修饰符不起作用。
extension View {
func primaryLabelStyle(_ weight: Font.Weight) -> some View {
return self.modifier(PrimaryLabel(weight: weight))
}
}
struct PrimaryLabel: ViewModifier {
let weight: Font.Weight
func body(content: Content) -> some View {
content
.font(Font.body.smallCaps())
.font(.system(size: 20, weight: weight, design: .serif)) // this is not working. Only the first one will '.font' will work
}
}
Text("Hello World").primaryLabelStyle(.light)
第一个修改器只可见,这是合乎逻辑的,尝试应用少量,背景或.foregroundColor ....它的工作方式相同。
尝试
VStack {
Text("ALFA").font(.largeTitle)
Text("Beta").foregroundColor(Color.red)
}
.font(.system(size: 150))
.foregroundColor(Color.blue)
您可以使用不同的初始值设定项创建字体
init(CTFont)
从平台字体实例获取字体。
static func system(Font.TextStyle, design: Font.Design) -> Font
获取具有给定样式和设计的系统字体。
static func system(size: CGFloat, weight: Font.Weight, design: Font.Design) -> Font
指定要使用的系统字体,以及要应用于文本的样式、粗细和任何设计参数。
static func custom(String, size: CGFloat) -> Font
获取具有给定名称和大小的自定义字体。
您还可以进一步设置文本样式
设置文本视图的样式
func bold() -> Text
对文本应用粗体字重。
func italic() -> Text
对文本应用斜体。
func fontWeight(Font.Weight?) -> Text
设置文本的字体粗细。
func baselineOffset(CGFloat) -> Text
设置文本的基线偏移量。
func tracking(CGFloat) -> Text
设置文本的跟踪。
func kerning(CGFloat) -> Text
设置两个字符之间的间距或字距调整。
func underline(Bool, color: Color?) -> Text
对文本应用下划线。
func strikethrough(Bool, color: Color?) -> Text
对文本应用删除线。
警告!!
并非所有组合都受支持!
参见 How to apply .italic() to .largeTitle Font?
我正在尝试使用修饰符为我的应用程序创建一些默认字体。如果有更简单的方法,我很想知道。目前,我有
struct PrimaryLabel: ViewModifier {
func body(content: Content) -> some View {
content
.font(Font.body.smallCaps())
.font(.system(size: 20, weight: .light, design: .serif)) // this is not working. Only the first one will '.font' will work
}
}
可用性:
Text("Hello World").modifier(PrimaryLabel())
有没有办法更改字体类型(例如使用 AmericanTypewriter-Light 字体)、全部大写并使用 weight: .light, design: .serif
、粗体等样式?我不想定义每一个文本。结构中的第二个 .font
修饰符不起作用。
extension View {
func primaryLabelStyle(_ weight: Font.Weight) -> some View {
return self.modifier(PrimaryLabel(weight: weight))
}
}
struct PrimaryLabel: ViewModifier {
let weight: Font.Weight
func body(content: Content) -> some View {
content
.font(Font.body.smallCaps())
.font(.system(size: 20, weight: weight, design: .serif)) // this is not working. Only the first one will '.font' will work
}
}
Text("Hello World").primaryLabelStyle(.light)
第一个修改器只可见,这是合乎逻辑的,尝试应用少量,背景或.foregroundColor ....它的工作方式相同。
尝试
VStack {
Text("ALFA").font(.largeTitle)
Text("Beta").foregroundColor(Color.red)
}
.font(.system(size: 150))
.foregroundColor(Color.blue)
您可以使用不同的初始值设定项创建字体
init(CTFont)
从平台字体实例获取字体。
static func system(Font.TextStyle, design: Font.Design) -> Font
获取具有给定样式和设计的系统字体。
static func system(size: CGFloat, weight: Font.Weight, design: Font.Design) -> Font
指定要使用的系统字体,以及要应用于文本的样式、粗细和任何设计参数。
static func custom(String, size: CGFloat) -> Font
获取具有给定名称和大小的自定义字体。
您还可以进一步设置文本样式
设置文本视图的样式
func bold() -> Text
对文本应用粗体字重。
func italic() -> Text
对文本应用斜体。
func fontWeight(Font.Weight?) -> Text
设置文本的字体粗细。
func baselineOffset(CGFloat) -> Text
设置文本的基线偏移量。
func tracking(CGFloat) -> Text
设置文本的跟踪。
func kerning(CGFloat) -> Text
设置两个字符之间的间距或字距调整。
func underline(Bool, color: Color?) -> Text
对文本应用下划线。
func strikethrough(Bool, color: Color?) -> Text
对文本应用删除线。
警告!! 并非所有组合都受支持! 参见 How to apply .italic() to .largeTitle Font?