Я создаю приложение для iOS с помощью WkWebview, Vue.js.
Тема веб-сайта всегда темная, поэтому каждый цвет фона темный #181818.
При движении назад/вперед на экране отображается предварительный просмотр предыдущей/следующей страницы, верно?
Иногда ничего не отображается. (Думаю, это связано с кешем или SPA)
Не имеет значения. Наконец-то страница загружается хорошо.
Но в WkWebview фон мигает белым при переходе вперед/назад.
Скриншот веб-просмотра
Я так и думал Цвет тела html — белый, но он тоже был #181818.
скриншот Safari
В Safari отображается #181818< /code> ну...
Как это исправить?
ViewController.swift:
import UIKit
import WebKit
func hexStringToUIColor (hex:String) -> UIColor {
var cString:String = hex.trimmingCharacters(in: .whitespacesAndNewlines).uppercased()
if (cString.hasPrefix("#")) {
cString.remove(at: cString.startIndex)
}
if ((cString.count) != 6) {
return UIColor.gray
}
var rgbValue:UInt64 = 0
Scanner(string: cString).scanHexInt64(&rgbValue)
return UIColor(
red: CGFloat((rgbValue & 0xFF0000) >> 16) / 255.0,
green: CGFloat((rgbValue & 0x00FF00) >> 8) / 255.0,
blue: CGFloat(rgbValue & 0x0000FF) / 255.0,
alpha: CGFloat(1.0)
)
}
class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate, WKScriptMessageHandler {
@IBOutlet weak var containerView: UIView!
var webView: WKWebView!
var baseURL = "http://example.com"
override func loadView() {
super.loadView()
containerView.backgroundColor = hexStringToUIColor(hex: "#121212")
containerView.isOpaque = false
let contentController = WKUserContentController()
let config = WKWebViewConfiguration()
config.userContentController = contentController
config.preferences.javaScriptCanOpenWindowsAutomatically = true
webView = WKWebView(frame: self.containerView.frame, configuration: config)
webView.uiDelegate = self
webView.navigationDelegate = self
webView.isOpaque = false
webView.isHidden = false
webView.allowsBackForwardNavigationGestures = true
webView.scrollView.contentInsetAdjustmentBehavior = .never
webView.backgroundColor = UIColor.clear
webView.scrollView.backgroundColor = hexStringToUIColor(hex: "#121212")
webView.allowsBackForwardNavigationGestures = true
self.view.addSubview(webView)
}
override func viewDidLoad() {
super.viewDidLoad()
self.view.isOpaque = false
self.containerView.isOpaque = false
webView.isOpaque = false
let backgroundColor = hexStringToUIColor(hex: "#121212")
webView.backgroundColor = backgroundColor
super.viewDidLoad()
let url = URL(string:baseURL)
openApp(url: url!)
// webView.addObserver(self, forKeyPath: "URL", options: .new, context: nil)
}
func openApp(url: URL){
let request = URLRequest(url: url, cachePolicy: URLRequest.CachePolicy.useProtocolCachePolicy)
webView.evaluateJavaScript("navigator.userAgent") { [weak webView] (result, error) in
if let webView = webView, let userAgent = result as? String {
let currentVersion = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String
webView.customUserAgent = userAgent + "ios/" + currentVersion!
}
}
webView.load(request)
}
}
Подробнее здесь: https://stackoverflow.com/questions/668 ... ck-forward
WkWebview мигает белым, когда жест возвращается/вперед ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
SwiftUI — жест перетаскивания блокирует жест прокрутки только на iPhone 11
Anonymous » » в форуме IOS - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-
-
-
SwiftUI — жест перетаскивания блокирует жест прокрутки только на iPhone 11
Anonymous » » в форуме IOS - 0 Ответы
- 26 Просмотры
-
Последнее сообщение Anonymous
-