【发布时间】:2019-11-20 04:48:36
【问题描述】:
我有一个非常简单的 Web 视图项目,它只加载一个网站。但是有一个错误,如果我向下滚动,网站内容会显示在状态栏中。
我读到这是因为 ViewController 的背景颜色设置为透明,如何将其更改为另一种颜色?
我试过这样:
let color = UIColor.black;
self.view.backgroundColor = color
但没有任何改变
完整代码:
ViewController.swift
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
@IBOutlet var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
// 1 The webView loads the url using an URLRequest object.
let url = URL(string: "https://www.blizz-z.de/")!
webView.load(URLRequest(url: url))
// 2 A refresh item is added to the toolbar which will refresh the current webpage.
let refresh = UIBarButtonItem(
barButtonSystemItem: .refresh,
target: webView,
action: #selector(webView.reload)
)
toolbarItems = [refresh]
navigationController?.isToolbarHidden = true
navigationController?.isNavigationBarHidden = true
}
override func loadView() {
webView = WKWebView()
webView.navigationDelegate = self
view = webView
let color = UIColor.black;
self.view.backgroundColor = color
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
title = webView.title
}
}
我可以使用以下代码禁用状态栏来修复错误,但我尽量保留它:
override var prefersStatusBarHidden: Bool {
return true
}
【问题讨论】:
-
如果它是您在网页视图中加载的网站,并且您的网站中存在标题栏,那么您如何在您的 IOS 代码中更改它?如果这是不可能的情况,您需要在您的网站代码中进行更改。
-
状态栏不是来自我的网站,是来自 iPhone。
-
状态栏是透明的。结束。如果您不想在其后面显示某些内容,请不要在其后面放置任何内容。
-
@matt,那我应该怎么解决,明显是iOS或者Xcode的问题。我为 android 开发了完全相同的应用程序,那里一切正常。
-
不要将 webview 设置为 self.view。使用 self.view.addSubview() 将 webview 添加为子视图,并正确设置约束以省略顶部状态栏。不要忘记为 webview 将 clipsToBound 设置为 true。