SwiftUI 连接文本和文本对齐

JMD*_*JMD 0 swift swiftui

我正在尝试连接两个字符串,然后将最终结果中心对齐。问题似乎是两个Text()视图与 + 组合不再创建Text()类型。尝试应用任何.multiLineTextAlignment或只是Alignment给出错误

无法将类型的值转换some View为预期的参数类型Text

这是一个例子:

Text(myText ?? "")
    .font(Font(myFont))
    .kerning(spacing)
    .foregroundColor(Color(textColor))
//.multilineTextAlignment(.center) - throws error
+ Text(text2 ?? "")
    .font(Font(myFont))
    .foregroundColor(Color(textColor))
    .baselineOffset(6)
    .kerning(spacing)
Run Code Online (Sandbox Code Playgroud)

小智 6

Text()你是绝对正确的,当一个人使用时你不能连接.multiLineTextAlignment

理论上,您所编写的内容将创建一个文本视图,该视图会换行,直到到达特定行,然后不再换行。这不是 SwiftUI 中受支持的行为,需要自定义构建。所有串联的文本视图通常需要遵循相同的对齐规则。

但是,如果您想将相同的对齐规则应用于所有串联的文本视图,您可以通过将它们包装起来轻松地做到这一点,如下Group()所示:

Group {
    Text(myText ?? "")
        .font(Font(myFont))
        .kerning(spacing)
        .foregroundColor(Color(textColor))
    + Text(text2 ?? "")
        .font(Font(myFont))
        .foregroundColor(Color(textColor))
        .baselineOffset(6)
        .kerning(spacing)
}
.multilineTextAlignment(.center)
Run Code Online (Sandbox Code Playgroud)