Я создаю приложение для 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
Программируем под IOS
-
Anonymous
1716721707
Anonymous
Я создаю приложение для 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)
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/66838604/wkwebview-flashs-white-when-gesture-go-back-forward[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия