【问题标题】:UIKit live preview, like swiftUIUIKit 实时预览,如 swiftUI
【发布时间】:2021-07-19 03:58:51
【问题描述】:

什么 UIKit 在 xcode 中有实时预览?像 swiftUI 一样在 xcode 上有一个实时的 priview。使用 swiftUI 编写代码时,可以在左侧 xcode 中显示结果设计

【问题讨论】:

    标签: ios swiftui uikit


    【解决方案1】:

    您可以通过导入 SwiftUI 来试用此代码。您可以创建新文件或将其放在 ViewController 代码下方。

    struct MainViewController_Previews: PreviewProvider {
    
    static var previews: some View {
            return ContentView()
        }
        
        struct ContentView: UIViewControllerRepresentable {
            
            func makeUIViewController(context: Context) -> MainViewController {
                return MainViewController()
            }
            
            func updateUIViewController(_ uiViewController: MainViewController, context: Context) {
                //
            }
        }
    }
    

    如果您想 IgnoringSafeArea,只需添加 ContentView().edgesIgnoringSafeArea(.all),对于特定设备类型,您可以使用 .previewDevice(.init(stringLiteral: "DEVICE_TYPE")) // iPhone 11 Pro

    【讨论】:

    • 我需要导入swiftUI吗?
    • 将 MainViewController 替换为您的 ViewController 名称。是的,您需要先导入 SwiftUI,因为 PreviewProvider 协议在 UIKit 中不可用。
    【解决方案2】:

    让您的 ViewControllers 使用 Xcode 预览

    1 - 通过符合 UIViewControllerRepesentable 协议使它们可表示。

    struct YourVCRepresentable: UIViewControllerRepresentable {
        func updateUIViewController(_ uiViewController: UIViewController, context: Context) {
            // leave this empty
        }
        
        func makeUIViewController(context: Context) -> UIViewController {
            YourViewController() // this is to make your view controller representable
        }
    }
    

    2 - 创建符合 PreviewProvider 协议的预览提供程序结构并传递上面创建的 RepresentableViewController。

    struct YourVCPreview: PreviewProvider {
        static var previews: some View {
           YourVCRepresentable()
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-01-13
      • 2020-06-11
      • 1970-01-01
      • 1970-01-01
      • 2020-07-23
      • 2021-10-09
      • 1970-01-01
      • 2021-09-06
      相关资源
      最近更新 更多