我尝试连接两个字符串,然后使最终结果居中对齐。问题似乎是两个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)
3条答案
按热度按时间wixjitnu1#
当一个人使用
.multiLineTextAlignment
时,你不能连接Text()
,这是绝对正确的。从理论上讲,你所写的内容将创建一个文本视图,该视图在到达特定行之前换行,然后不再换行。这在SwiftUI中不受支持,需要自定义构建。所有连接的文本视图通常需要遵循相同的对齐规则。
但是,如果您想对所有连接的文本视图应用相同的对齐规则,您可以轻松地将它们 Package 在
Group()
中,如下所示:sg3maiej2#
如果你想让文本水平居中,不要使用
+
操作符。如果你的文本有相同的样式,插入字符串,如下所示:Text("\(myText ?? "")\(text2 ?? "")")
。否则,尝试使用HStack
并将其置于父视图的中心。您可以调整HStack的spacing
属性,使其看起来更自然。tv6aics13#
看起来像是将Text + Text包围在堆栈中,然后将.multiLineText应用到堆栈本身就是解决方案。