swift - 如何通过循环组合文本视图?
问题描述
我们可以使用 + 从几个小的文本视图中创建新的文本视图,这是一种创建更高级格式的简单方法。例如,这会创建三个不同颜色的文本视图并将它们组合在一起:
struct ContentView: View {
var body: some View {
Text("Colored ")
.foregroundColor(.red)
+
Text("SwifUI ")
.foregroundColor(.green)
+
Text("Text")
.foregroundColor(.blue)
}
}
但是如何通过循环创建组合文本视图。例如(这不起作用)
View v;
ForEach((1...3), id: \.self) {
v.append(Text("\($0)"))
}
解决方案
您实际上是在尝试Text
从序列中获取类型的表达式0...3
。您可以先map
对Text
对象进行序列化。如何将一系列对象组合成一个对象?reduce
!
(1...3).map { Text("\($0)") }.reduce(Text(""), +)
请注意,它Text("")
的行为类似于+
操作的标识元素。
推荐阅读
- php - 为什么我在 Laravel 5.4 中启用路由组时收到“NotFoundHttpException”?
- sql - 从 Visual Studio 本地服务器创建 DSN 文件
- sqlalchemy - 使用 Apscheduler 的 sqlalchemy QueuePool 行为
- reactjs - 如何在 React 中制作一个快速可靠的图库页面?
- javascript - 从 p 标签中获取点击的字母
- shell - Unix在子目录中使用SED而不修改子目录的时间戳
- reactjs - 导入路径不能以“.ts”扩展名结尾。考虑导入'src/theme.js'
- iframe - 我想使用 iframe 从网站批量下载图片,但无法获取特定的 url
- java - 模块 jdk.compiler 不会“打开 com.sun.tools.javac.processing”到未命名的模块 @4bae33a6
- django - Django如何为每个用户正确显示分页?