我正在尝试在我的应用程序中实现一个简单的Web浏览器。 因为我需要控制cookie,所以我决定使用WKWebView。
官方示例运行良好,但是示例1)不使用情节提要2)将视图直接设置为网络视图
因此我将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不会出现:
如何解决此问题?谢谢。
更新:
这是视图的布局和约束
更新:
因此,我删除了所有不必要的约束,并且布局似乎已修复。但是,网络视图仍为空白。
如果我在view = webView
的末尾添加一行viewDidLoad
。网页正确呈现。
(出于某些原因,图像会上传,我稍后会再试)
更新:
不幸的是,将所有内容都移至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仍然是空白。
答案 0 :(得分:0)
删除IBOutlet,然后尝试再次连接到插座。
可能是
import UIKit
import WebKit
class ViewController: UIViewController {
@IBOutlet weak var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
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)
}
}
extension ViewController: WKUIDelegate {
}
extension ViewController: WKNavigationDelegate {
}
答案 1 :(得分:0)
我认为您的问题与StackView选项有关。请同时显示您对StackView设置了哪些设置?对齐和分配是主要内容。
尝试设置:
Alignment -> Center
Distribution -> Fill
从工具栏和WebView中删除所有约束,并仅保留工具栏高度=56。这是StackView内部唯一需要的约束。另外,请确保保留StackView的约束,因为这些约束定义了其中包含的对象的约束。 确保视图周围没有红色边框(如果它是红色的,则说明您丢失了某些东西)。
答案 2 :(得分:0)