Unë jam duke përdorur WKWebView për të hapur faqet e internetit në aplikacionin tim Swift 3+. Unë NUK jam duke përdorur storyboard ose XIB.
Kur ngarkohet pamja ime në ueb, ai fsheh informacionin e operatorit, treguesit e fuqisë së sinjalit të rrjetit celular (pika), treguesin e lidhjes WiFi/4G, kohën dhe statusin e baterisë për shkak të ngjyrës së zezë të sfondit (i caktuar si parazgjedhje)
Unë dua të shfaq pamjen time të internetit poshtë shiritit të statusit të lartë. Kam marrë lartësinë e shiritit të statusit duke përdorur UIApplication.shared.statusBarFrame.height
(prisja që të ishte 20 dhe e konfirmova)
Si mund t'i bëj që të dyja të duken mirë? (me sfond të bardhë/transparencë) në mënyrë që përdoruesit të mund të shohin informacionin e shiritit të statusit në krye dhe më pas pamjen e internetit siç pritej.
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)
}
}
në rrotullim, treguesi i gjelbër i baterisë fshihet. do të doja ta rregulloja edhe atë. navpath (mbajtësi i tekstit të shiritit të adresave) dhe butoni (mbyll) gjithashtu nuk vendosen gabimisht, mendoj se më duhet autolayout/constraintmanager ose diçka tjetër.
mostrat aktuale po ngarkohen duckduckgo:
portret
peizazh
gjithashtu, më njoftoni nëse UITextView është një zgjedhje e mirë për të shfaqur shiritin e adresave (URL e faqes së internetit), apo duhet të përdor UILabel ose diçka tjetër, ndoshta më të mirë, navigationBar? por, mendoj se kjo do të kërkonte storyboard/xib.
false
ndërsa përdornioverride var prefersStatusBarHidden: Bool { }
14.02.2017