示例
swift
struct TextBootcampView: View {
var body: some View {
Text("Hello, World!".capitalized) // 格式化字符串
.multilineTextAlignment(.leading)
.foregroundColor(.red)
.frame(width: 200, height: 100, alignment: .leading)
.minimumScaleFactor(0.1) // 极限压缩
}
}
修饰符行为
| 修饰符 | 作用 | 备注 / 坑 |
|---|---|---|
.capitalized |
先「单词首字母大写」再显示 | 这是 String 的 Foundation 方法,不是 Text 的修饰符;对中文无效果 |
.font(.body) |
系统动态字体「正文」级别 | 会随用户「设置-显示与文字大小」变化,无障碍友好 |
.fontWeight(.semibold) / .bold() |
字重 | 两者可叠加,后写的覆盖前面的 |
.underline(true, color: .red) |
下划线 + 自定义颜色 | 传 false 可取消;颜色缺省用 foregroundColor |
.italic() |
斜体 | 只对支持斜体的字体有效;中文一般无斜体轮廓 |
.strikethrough(true, color: .green) |
删除线 | 与 underline 可同时存在 |
.font(.system(size:24, weight:.semibold, design:.default)) |
完全自定义字体 | 不会响应动态类型 ,除非自己再包 UIFontMetrics;苹果官方推荐优先用 Font 语义化 API |
.baselineOffset(50) |
基线偏移 | 正值上移,负值下移;可做「上标/下标」效果,但别用于整行,会炸行高 |
.kerning(1) |
字符间距 | 对中文同样生效;负值会让字贴得更紧 |
.multilineTextAlignment(.leading) |
多行文字水平对齐 | 只在「宽度被限制且文字折行」时生效 |
.foregroundColor(.red) |
文字颜色 | iOS 17 起新增 foregroundStyle 支持渐变/材质,旧项目注意版本 |
.frame(width:200, height:100, alignment:.leading) |
给 Text 套固定尺寸 | Text 默认是「尺寸自适应」;一旦加 frame,多余文字会被截断 除非搭配 minimumScaleFactor |
.minimumScaleFactor(0.1) |
超长时等比缩小 | 范围 0.01--1.0;与 lineLimit(nil) 配合可实现「先缩再放」效果 |