#2 Adding Text in SwiftUI

61 阅读1分钟

示例

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) 配合可实现「先缩再放」效果