gpt4 book ai didi

swift - 是否可以从字符串实例化 SwiftUI View ?

转载 作者:行者123 更新时间:2023-12-02 01:51:14 25 4
gpt4 key购买 nike

是否可以将字符串转换为 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
}

enter image description here

关于swift - 是否可以从字符串实例化 SwiftUI View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70318670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com