2017-02-13 53 views
1

我正在使用WKWebView在Swift 3+應用程序中打開網頁。 我不使用故事板或XIB。如何設置背景顏色爲透明,以顯示載體信息,時間和電池狀態

當我的網頁視圖負載,它隱藏了載體信息,蜂窩網絡的信號強度指標(點),無線/ 4G連接指示器,時間和電池狀態由於黑背景色(缺省設置)

我想在頂層狀態欄下方顯示我的webview。 我獲得使用UIApplication.shared.statusBarFrame.height 狀態欄的高度(希望它是20,並確認等等)

我怎樣才能同時出現呢? (具有白色背景/透明度) ,以便用戶可以按預期在頂部看到狀態欄信息,然後在webview上看到狀態欄信息。

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)和按鈕(關閉)也得到錯位,我想我需要autolayout/constraintmanager什麼的。

電流樣本裝載duckduckgo

肖像

portrait

景觀

landscape

另外,令m e知道如果UITextView是顯示地址欄(網頁的URL)的好選擇,或者我應該使用UILabel或其他的東西,可能更好,navigationBar?但是,我想這需要storyboard/xib。

回答

0

您可以設置prefferedStatusBarStyle您的觀點: https://developer.apple.com/reference/uikit/uiviewcontroller/1621416-preferredstatusbarstyle

在你的ViewController:

override var preferredStatusBarStyle: UIStatusBarStyle { 
    return .lightContent 
} 

如有不同意見有不同的狀態欄樣式,您可以使用setNeedsStatusBarAppearanceUpdate(),如更新。在viewDidAppear

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

+0

感謝,它的工作。 – computingfreak

+0

你能幫我解決旋轉問題嗎? – computingfreak

+0

嘗試在使用'override var prefersStatusBarHidden:Bool {}時返回'false' –