2017-02-13 4 views
1

Я использую 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:

портрет

portrait

пейзаж

landscape

дополнительно, пусть м e знаю, что UITextView является хорошим выбором для отображения адресной строки (URL-адрес веб-страницы), или я должен использовать UILabel или что-то еще, возможно, лучше, navigationBar? но, я думаю, для этого потребуется раскадровка/xib.

ответ

0

Вы можете установить prefferedStatusBarStyle для просмотра: https://developer.apple.com/reference/uikit/uiviewcontroller/1621416-preferredstatusbarstyle

В вашем ViewController:

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return .lightContent 
} 

Если разные виды имеют различные стили STATUSBAR, вы можете обновить его с помощью setNeedsStatusBarAppearanceUpdate(), например. в viewDidAppear.

https://developer.apple.com/reference/uikit/uiviewcontroller/1621354-setneedsstatusbarappearanceupdat

+0

спасибо, это сработало. – computingfreak

+0

Можете ли вы помочь мне решить проблему вращения? – computingfreak

+0

Попробуйте вернуть 'false' при использовании' override var prefersStatusBarHidden: Bool {} ' –

Смежные вопросы