在 SwiftUI 中,设置字体可以通过 .font()
修饰符,它提供了多种方式来自定义文本的外观,包括使用系统字体、自定义字体、动态类型支持等。下面是具体内容指导:
1. 使用默认的系统字体 #
默认字体是 Apple 的系统优化字体 San Francisco(SF Pro),这是 SwiftUI 自动提供的样式。
示例代码: #
Text("Hello, SwiftUI!")
.font(.body)
系统字体类型 | 描述 |
---|---|
.largeTitle | 大标题,用于页面的主标题,通常在顶部展示。 |
.title | 标题,与 .largeTitle 比小,用于次要标题。 |
.headline | 突出型文本,比如表单项的标题。 |
.subheadline | 次要的副标题或描述文本。 |
.body | 正常的正文文本。 |
.callout | 呼出内容,比如注释或引用。 |
.caption | 较小的内容,一般用于注释。 |
.footnote | 非常小的文字,用于边注或附加信息。 |
2. 使用系统字体,并自定义字体大小和权重 #
通过 .system(size:weight:design:)
,可以完全控制字体的大小、粗细、字体设计样式。
示例代码: #
Text("Hello, Custom Font!")
.font(.system(size: 24, weight: .bold, design: .serif))
参数 | 描述 |
---|---|
size | 字体大小,比如 16 、24 。 |
weight | 字体粗细,值包括 .regular 、.medium 、 .bold 等。 |
design | 字体设计风格,比如 .default 、.serif 、.monospaced 。 |
3. 自定义字体(加载本地字体) #
如果你想使用自定义字体,比如你引入了外部字体文件(如 .ttf
或 .otf
),SwiftUI 可以使用 自定义字体。具体步骤如下:
步骤 1:将字体文件导入项目 #
- 将
.ttf
或.otf
字体文件拖入项目的资源文件夹(Assets 或直接放到项目根目录)。 - 在项目的
info.plist
文件中添加一项:- 键:
Fonts provided by application
- 值:字体文件的名称(例如:
CustomFontName.ttf
)。
- 键:
步骤 2:在代码中使用自定义字体 #
通过字体文件的名字来设置字体。
Text("Hello, Custom Font!")
.font(.custom("CustomFontName", size: 20)) // 替换 "CustomFontName" 为字体名称
注意事项: #
- 确保字体名称与
.ttf
文件中定义的实际字体名称一致,而不是单纯的文件名。可以通过 macOS 的字体预览工具找到具体的字体名称。
4. 动态字体支持(Accessibility 支持) #
动态字体可以根据用户在 iOS 设置中的字体大小偏好进行自动调整。SwiftUI 支持动态类型的方式是使用 .font()
结合系统提供的命名。
例如:
Text("Dynamic Font Example")
.font(.body) // 直接使用 .body,动态字体会自动调整大小
手动指定可缩放的动态字体 #
如果使用了 .system
或 .custom
,也可以使字体随系统动态类型变化。
Text("Hello, SwiftUI!")
.font(.custom("CustomFontName", size: 18))
.dynamicTypeSize(.medium ... .xxLarge) // 最小和最大动态大小范围
5. 字体样式修饰符的组合 #
你可以结合多个修饰符自定义字体样式。以下是一些常见的修饰符:
.bold()
: 设置加粗字体;.italic()
: 设置斜体;.monospaced()
: 使用等宽字体(类似代码文本)。
Text("Bold and Italic Font!")
.font(.title)
.bold()
.italic()
.monospaced() // 将字体设置为等宽字体
6. 动态调整大小以适应布局 #
SwiftUI 提供 .minimumScaleFactor()
来确保文本能够在有限的空间中缩小显示,而不是被截断。
Text("This is a very long text that might get truncated.")
.font(.title)
.lineLimit(1) // 限制为一行
.minimumScaleFactor(0.5) // 自动缩小字体到 50%
lineLimit(1)
:限制行数为 1 行。minimumScaleFactor(0.5)
:文本缩小至原尺寸的 50%。
7. 设置不同平台的字体 #
如果你针对 iOS 和 macOS 等多个平台开发应用,可能需要为不同平台设置不同的字体。
示例:检查当前平台 #
import SwiftUI
struct PlatformSpecificFont: View {
var body: some View {
Text("Platform Specific Font")
.font(platformFont)
}
var platformFont: Font {
#if os(iOS)
return .system(size: 18, weight: .bold, design: .default)
#elseif os(macOS)
return .headline
#endif
}
}
8. 示例项目 #
以下展示如何设置字体大小、样式以及动态调整:
import SwiftUI
struct FontExampleView: View {
var body: some View {
VStack(spacing: 16) {
// 默认字体
Text("Default Font")
.font(.body)
// 系统字体
Text("Custom System Font")
.font(.system(size: 24, weight: .bold, design: .rounded))
// 自定义字体
Text("Hello with Custom Font!")
.font(.custom("CustomFontName", size: 20)) // 确保字体已经导入
// 加粗及斜体
Text("Bold and Italic")
.font(.title)
.bold()
.italic()
// 动态缩小文本
Text("This is a long text that may not fit in one line.")
.font(.headline)
.lineLimit(1)
.minimumScaleFactor(0.5)
}
.padding()
}
}
struct FontExampleView_Previews: PreviewProvider {
static var previews: some View {
FontExampleView()
}
}
9. 字体与平台设计指南 #
请根据 Apple 的设计指南为不同类型的内容选择合适的字体:
- 标题内容:使用
.title
或.largeTitle
。 - 正文内容:使用
.body
或.callout
。 - 说明性文字:使用
.footnote
或.caption
。
对于 iOS 和 macOS,现代设计通常推荐使用 Apple 提供的系统字体(如 .default
),以获得一致的视觉体验。如果需要独特的品牌视觉,可以选择导入自定义字体。