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

标签 swift swiftui

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

相关文章:

ios - 带闭包的 UIGestureRecognizer

swift - 将 float3 从 Swift 结构传递到 Metal 着色器

swift - 是否可以从 SwiftUI 使用 ASWebAuthenticationSession ?

swift - 更改选项卡式 View SwiftUI 的凹口区域背景颜色

ios - ForEach 两个数组 - 可能有简单的解决方案吗?

ios - 在 Swift iOS 中播放 PCM 文件

ios - .notDetermined 等待用户的响应

ios - 从 ScrollView 中的 UIimageView 获取可见部分图像

swift - Firebase Analytics - 记录 screen_view 在 SwiftUI 中不起作用

ios - SwiftUI Canvas 无法构建