@@ -66,6 +66,13 @@ fileprivate struct Webview: UIViewRepresentable, WebViewHandlerDelegate {
6666 webView. allowsBackForwardNavigationGestures = false
6767 webView. scrollView. isScrollEnabled = false
6868 webView. configuration. defaultWebpagePreferences. allowsContentJavaScript = true
69+
70+ // Set WebView background based on current UI mode to prevent white flash
71+ let isDark = determineIsDarkMode ( )
72+ webView. isOpaque = false
73+ webView. backgroundColor = isDark ? UIColor ( red: 0.067 , green: 0.071 , blue: 0.078 , alpha: 1.0 ) : UIColor . white
74+ webView. scrollView. backgroundColor = isDark ? UIColor ( red: 0.067 , green: 0.071 , blue: 0.078 , alpha: 1.0 ) : UIColor . white
75+
6976 return webView
7077 }
7178
@@ -74,16 +81,13 @@ fileprivate struct Webview: UIViewRepresentable, WebViewHandlerDelegate {
7481// if rendered { return }
7582 var content = Bundle . readString ( name: " v2er " , type: " html " )
7683 // Determine dark mode based on app appearance setting
77- let isDark : Bool
78- let appearance = store. appState. settingState. appearance
79- switch appearance {
80- case . dark:
81- isDark = true
82- case . light:
83- isDark = false
84- case . system:
85- isDark = colorScheme == . dark
86- }
84+ let isDark = determineIsDarkMode ( )
85+
86+ // Update WebView background color to match current UI mode
87+ webView. isOpaque = false
88+ webView. backgroundColor = isDark ? UIColor ( red: 0.067 , green: 0.071 , blue: 0.078 , alpha: 1.0 ) : UIColor . white
89+ webView. scrollView. backgroundColor = isDark ? UIColor ( red: 0.067 , green: 0.071 , blue: 0.078 , alpha: 1.0 ) : UIColor . white
90+
8791 let fontSize = 16
8892 let params = " \( isDark) , \( fontSize) "
8993 content = content? . replace ( segs: " {injecttedContent} " , with: html ?? . empty)
@@ -92,6 +96,18 @@ fileprivate struct Webview: UIViewRepresentable, WebViewHandlerDelegate {
9296 webView. loadHTMLString ( content ?? . empty, baseURL: baseUrl)
9397 }
9498
99+ private func determineIsDarkMode( ) -> Bool {
100+ let appearance = store. appState. settingState. appearance
101+ switch appearance {
102+ case . dark:
103+ return true
104+ case . light:
105+ return false
106+ case . system:
107+ return colorScheme == . dark
108+ }
109+ }
110+
95111 func receivedJsonValueFromWebView( value: [ String : Any ? ] ) {
96112 print ( " JSON value received from web is: \( value) " )
97113 }
0 commit comments