2017-02-13 5 views
1

Swift 3+アプリでWKWebViewを使用してウェブページを開きます。 私はストーリーボードまたはXIBを使用していません。私のWebViewの負荷が、それが原因(デフォルトで設定された)黒の背景色キャリアの情報、時間、バッテリーの状態を表示するために背景色を透明に設定する方法

にキャリア情報、セルラネットワーク信号強度インジケータ(ドット)、無線LAN/4G接続インジケータ、時間、およびバッテリ状態を隠し

私はトップのステータスバーの下に私のwebviewを表示したい。 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)とボタン(閉じる)も間違っている、私は、私は/制約エージェントまたは何かautolayoutが必要だと思う。

電流サンプルローディングduckduckgo

肖像

portrait

風景

landscape

さらには、Mを聞かせ私はUITextViewがアドレスバー(ウェブページのURL)を表示するための良い選択であるかどうか、または私はUILabelまたは他の何か、おそらく良い、navigationBarを使用する必要がありますか?しかし、それはストーリーボード/ xibを必要とするだろうと思います。あなたのビューのprefferedStatusBarStyleを設定することができ

答えて

0

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を使用している間に 'false'を返そうとしますvar prefersStatusBarHidden:Bool {}' –

関連する問題