I'm new on Swift UI, I creating an app for my company, I create an webView to show some news on the app homepage, I getting it from our website, but I want to hide some menus and other things to make it more clean, but I don't how even to start it, my app can show the "raw" webpage, if you guys can help me will be awesome
that's my code
import SwiftUI
import WebKit
struct Home: View {
@State private var showWebView = false
private let urlString: String = "https://mywebsite"
@Binding var showMenu: Bool
var body: some View {
VStack{
HStack{
WebViewHome(url: URL(string: urlString)!).frame(height: .infinity)
}
.padding([.top],0)
Spacer()
}
}
}
struct WebViewHome: UIViewRepresentable{
var url: URL
func makeUIView(context: Context) -> WKWebView {
let prefs = WKWebpagePreferences()
prefs.allowsContentJavaScript = true
let config = WKWebViewConfiguration()
config.defaultWebpagePreferences = prefs
return WKWebView()
}
func updateUIView(_ uiView: WKWebView, context: Context) {
let request = URLRequest(url: url)
uiView.load(request)
}
}
Inject JavaScript into the webpage to manipulate the DOM. You need to know the CSS selectors of the elements you want to hide:
struct WebViewHome: UIViewRepresentable {
var url: URL
var js: String = """
document.querySelector('selector').style.display='none';
document.querySelector('another-selector').style.display='none';
// Add more selectors
"""
func makeUIView(context: Context) -> WKWebView {
let prefs = WKWebpagePreferences()
prefs.allowsContentJavaScript = true
let config = WKWebViewConfiguration()
config.defaultWebpagePreferences = prefs
let webView = WKWebView(frame: .zero, configuration: config)
webView.navigationDelegate = context.coordinator
return webView
}
func updateUIView(_ uiView: WKWebView, context: Context) {
let request = URLRequest(url: url)
uiView.load(request)
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: NSObject, WKNavigationDelegate {
var parent: WebViewHome
init(_ parent: WebViewHome) {
self.parent = parent
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript(parent.js, completionHandler: nil)
}
}
}