是否可以将字符串转换为 SwiftUI View ?类似于 JavaScript 的 eval()。在下面的代码中,我正在寻找 XXX 函数。
let uiString: String = “VStack { Text(\“hi there\”) }”
let view: some View = XXX(uiString)
最佳答案
!!!不建议 !!!不要在家里尝试这个!
这是一个示例,但您需要考虑任何可能的 View ,或者您可以像我一样将您的工作限制为仅针对某些特殊输入。
PS:您可以在代码中做一些大的优化,通过使用更多的 for 循环、switch 或枚举来使其更好更快,但最终,我在这里展示的东西是 SwiftUI 的作品,不是我们!而且不推荐。这只是一个展示代码如何完成的案例。
struct ContentView: View {
var body: some View {
StringDecoderView(string: "Circle().fill(Color.red); Rectangle()")
}
}
struct StringDecoderView: View {
let string: String
var body: some View {
let arrayOfComponents: [String] = string.components(separatedBy: ";")
var anyView: [CustomViewType] = [CustomViewType]()
for item in arrayOfComponents {
if item.contains("Circle()") {
if item.contains(".fill") && item.contains("Color.red") {
anyView.append(CustomViewType(anyView: AnyView(Circle().fill(Color.red))))
}
else {
anyView.append(CustomViewType(anyView: AnyView(Circle())))
}
}
else if item.contains("Rectangle()") {
anyView.append(CustomViewType(anyView: AnyView(Rectangle())))
}
}
return ForEach(anyView) { item in
item.anyView
}
.padding()
}
}
struct CustomViewType: Identifiable {
let id: UUID = UUID()
var anyView: AnyView
}
关于swift - 是否可以从字符串实例化 SwiftUI View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70318670/