42

SwiftUI Integrate with UIKit Tutorial

 4 years ago
source link: https://www.tuicool.com/articles/b2EVN3F
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

At the current state of SwiftUI not all views are implemented yet. UIKit views can be added in the Swift hierarchy. In this tutorial a url will be displayed in a web view.SwiftUI requires Xcode 11 and MacOS Catalina, for which the Betas can be downloaded at the Apple developer portal.

Open Xcode and either click Create a new Xcode project in Xcode’s startup window, or choose File > New > Project . In the template selector, select iOS as the platform, select the Single View App template, and then click Next . Enter SwiftUIIntegrateUIKitTutorial as the Product Name, select the Use SwiftUI checkbox, and click Next . Choose a location to save the project on your Mac.

YFNj2qu.png!web

A new webView needs to be created inside the project. Choose File -> New -> File and select iOS -> User Interface -> SwiftUI View. Name the file WebView.swift .

In the canvas, click Resume to display the preview. If the canvas isn’t visible, select Editor > Editor and Canvas to show it.

QF3Ibe3.png!web

In the Project navigator, click to select WebView.swift . Change the code to

import SwiftUI
import WebKit

// 1.
struct WebView : UIViewRepresentable {
    
    let request: URLRequest
    
    // 2.
    func makeUIView(context: Context) -> WKWebView {
        return WKWebView()
    }
    
    // 3.
    func updateUIView(_ uiView: WKWebView, context: Context) {
        uiView.load(request)
    }
}

#if DEBUG
struct WebView_Previews : PreviewProvider {
    static var previews: some View {
        // 4.
        WebView(request: URLRequest(url: URL(string: "https://ioscreator.com")!))
    }
}
#endif
  1. The UIViewRepresentable protocol enabling an existing UIKit View to be added to a SwiftUI hierarchy

  2. The makeUIView(context:) method is required and creates the web view to be presented.

  3. The updateUI(context:) method is required and updated the presented web view to the latest configuration.

  4. The preview will display the url embedded in an url request

Go to the SceneDelegate.swift file and change the window.rootViewController = … line to

window.rootViewController = UIHostingController(rootView: WebView(request: URLRequest(url: URL(string: "https://ioscreator.com")!)))

Go to the preview pane and switch to live view. The preview will look like this.

reErUfI.png!web

The source code of the SwiftUIIntegrateUIKitTutorial can be downloaded at the ioscreator repository on Github .


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK