Skip to content

Instantly share code, notes, and snippets.

@thewh1teagle
Last active January 28, 2024 17:08
Show Gist options
  • Save thewh1teagle/fe95268312da677b4fd7c57447203898 to your computer and use it in GitHub Desktop.
Save thewh1teagle/fe95268312da677b4fd7c57447203898 to your computer and use it in GitHub Desktop.
Multiwebview in swiftU

Multiwebview in swiftU

  1. Create App project in Xcode with SwiftUI interface.
  2. Allow outgoing + incoming internet by pressing the project name -> Signing & Capabilities -> App sandbox.
import SwiftUI
import WebKit
struct WebView: NSViewRepresentable {
let request: URLRequest
func makeNSView(context: Context) -> NSView {
let containerView = NSView()
let webView1 = WKWebView()
webView1.load(request)
let webView2 = WKWebView()
webView2.load(request)
// Set the size for the WKWebViews
let webViewSize = NSSize(width: 400, height: 300)
webView1.frame = NSRect(origin: .zero, size: webViewSize)
webView2.frame = NSRect(origin: NSPoint(x: webViewSize.width + 10, y: 0), size: webViewSize)
// Add the WKWebViews as subviews to the containerView
containerView.addSubview(webView1)
containerView.addSubview(webView2)
return containerView
}
func updateNSView(_ nsView: NSView, context: Context) {
// Update the WKWebViews if needed
if let webView1 = nsView.subviews[0] as? WKWebView,
let webView2 = nsView.subviews[1] as? WKWebView {
webView1.load(request)
webView2.load(request)
}
}
}
struct ContentView: View {
var body: some View {
HStack {
WebView(request: URLRequest(url: URL(string: "https://google.com")!))
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment