Я использую WKWebView для открытия веб-страниц в моем приложении Swift 3+. Я НЕ использую раскадровку или XIB.Как установить цвет фона на прозрачный, чтобы отображать информацию о несущей, время и состояние батареи
Когда моя WebView нагрузка, она скрывает информацию о несущей, клеточных показателях прочности сигнала сети (точки), Wi-Fi индикатор подключения/4G, время и состояние батареи из-за черный цвет фона (устанавливается по умолчанию)
Я хочу показать свой веб-просмотр ниже этой верхней строки состояния. я получил высоту STATUSBAR, используя UIApplication.shared.statusBarFrame.height
(ожидается, что это будет 20, и подтвердил это)
Как я могу сделать оба появляются хорошо? (с белым фоном/прозрачностью) , чтобы пользователи могли видеть информацию о статусе сверху, а затем веб-просмотр, как ожидалось.
Controller.swift:
import UIKit
import WebKit
class MyWebViewController: UIViewController, WKNavigationDelegate {
var urlString:String? = nil
let myWebView = WKWebView(frame:CGRect(x: 0, y: 32+UIApplication.shared.statusBarFrame.height, width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height-32-UIApplication.shared.statusBarFrame.height))
let button = UIButton(frame: CGRect(x:UIScreen.main.bounds.width - 100,y:50,width:50,height:50))
let navpath = UITextView(frame:CGRect(x: 0, y: UIApplication.shared.statusBarFrame.height, width: UIScreen.main.bounds.width, height: 32))
override func viewDidLoad() {
super.viewDidLoad()
self.view.isOpaque=true
self.view.backgroundColor = UIColor.clear
print("status bar height : \(UIApplication.shared.statusBarFrame.height)")
button.backgroundColor = UIColor.red
button.setTitle("close", for: .normal)
myWebView.navigationDelegate = self
myWebView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
myWebView.load(NSURLRequest(url: targetUrl as URL) as URLRequest)
view.addSubview(myWebView)
button.autoresizingMask = [.flexibleWidth, .flexibleHeight]
navpath.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.addSubview(navpath)
myWebView.addSubview(button)
}
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
//print(navigationAction.navigationType)
let navReq = navigationAction.request
let targetUrl = navReq?.url
let link = targetUrl?.absoluteString
print("targetURL : \(targetUrl)\n link : \(link)")
navpath.text=link
//self.myWebView.load(navReq)
decisionHandler(.allow)
}
}
на вращение, зеленый индикатор батареи идет скрытая. я тоже хотел бы это исправить. navpath (адресная панель textholder) и кнопка (close) также становятся неуместными, я думаю, что мне нужен автозапуск/ограничитель или что-то в этом роде.
текущие загрузки образцов duckduckgo:
портрет
пейзаж
дополнительно, пусть м e знаю, что UITextView является хорошим выбором для отображения адресной строки (URL-адрес веб-страницы), или я должен использовать UILabel или что-то еще, возможно, лучше, navigationBar? но, я думаю, для этого потребуется раскадровка/xib.
спасибо, это сработало. – computingfreak
Можете ли вы помочь мне решить проблему вращения? – computingfreak
Попробуйте вернуть 'false' при использовании' override var prefersStatusBarHidden: Bool {} ' –