【发布时间】:2018-06-21 02:12:34
【问题描述】:
我正在尝试在我的应用程序中实现一个简单的网络浏览器。 因为我需要控制 cookie,所以我决定使用 WKWebView。
官方的例子效果很好,但是那个例子1)不使用storyboard 2)直接将view设置为webview
所以我将我的 WKWeView 添加到情节提要并连接到插座,然后在 viewDidLoad 中加载 URL:
class BrowserViewController: UIViewController, WKUIDelegate, WKNavigationDelegate {
@IBOutlet var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
print("browser view loaded")
webView.uiDelegate = self
webView.navigationDelegate = self
let myURL = URL(string: "https://www.youku.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
我的故事板:
但是,当我在模拟器中运行我的应用程序时,WKWebView 没有出现:
我该如何解决这个问题?谢谢。
更新:
这是视图的布局和约束
更新:
所以我删除了所有不必要的约束,布局似乎是固定的。但是,网络视图仍然是空白的。
如果我在viewDidLoad 的末尾添加一行view = webView。网页正确呈现。
(由于某些原因图片会上传,我稍后再试)
更新:
很遗憾,将所有内容移至 viewWillAppear 也不起作用。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
print("browser view loaded")
webView.uiDelegate = self
webView.navigationDelegate = self
let myURL = URL(string: "https://www.bing.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
Webview 仍然是空白的。
【问题讨论】:
-
您是否在 webView 中添加了约束?可能是它已加载,但它在屏幕上根本不可见,因为它的位置不正确。您的搜索栏似乎发生了变化,因此 webView 可能做了同样的事情。
-
是的,webview 和工具栏在堆栈视图中。并且两者都有正常的约束,即顶部、底部、前导、尾随
-
要确认问题是否与自动布局有关,请禁用控制器的自动布局并查看它是否可见。
-
我不知道如何关闭它。谷歌也没有明确的方法来做到这一点。如果我删除所有约束,自动布局是否被视为禁用?
-
以编程方式添加 webView,而不是通过故事板或 xib