我试图在iOS 10中使用WKWebView并遇到与NSCoding相关的错误。
在搜索它时,我遇到了this article,因此决定以编程方式实现它。
我在情节提要中添加了一个视图控制器,然后将WKUIDelegate添加到了我的控制器中。但是即使在那之后,我仍然看不到屏幕上显示的网页。
我的视图控制器充当Web视图代码:
import UIKit
import WebKit
class WebViewController: UIViewController, WKUIDelegate {
var webView: WKWebView!
var articleURL: URL?
@IBOutlet var webViewContainer: UIView!
override func loadView() {
super.loadView()
}
override func viewDidLoad() {
super.viewDidLoad()
let webConfiguration = WKWebViewConfiguration()
let customFrame = CGRect.init(origin: CGPoint.zero, size: CGSize.init(width: 0.0, height: self.webViewContainer.frame.size.height))
self.webView = WKWebView (frame: customFrame , configuration: webConfiguration)
webView.translatesAutoresizingMaskIntoConstraints = false
self.webViewContainer.addSubview(webView)
webView.topAnchor.constraint(equalTo: webViewContainer.topAnchor).isActive = true
webView.rightAnchor.constraint(equalTo: webViewContainer.rightAnchor).isActive = true
webView.leftAnchor.constraint(equalTo: webViewContainer.leftAnchor).isActive = true
webView.bottomAnchor.constraint(equalTo: webViewContainer.bottomAnchor).isActive = true
webView.heightAnchor.constraint(equalTo: webViewContainer.heightAnchor).isActive = true
webView.uiDelegate = self
guard let url = articleURL else {
return
}
let myRequest = URLRequest(url: url)
webView.load(myRequest)
}
}
我从以前的控制器中检入该控制器。搜寻代码:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "webPage" {
let controller = (segue.destination as? WebViewController)!
controller.articleURL = movieReview?.articleURL
}
}
故事板图片:
我实际上是在导航至该视图,但是它是空白的。调试时,我的代码确实执行了“ webView.load(myRequest)”,但屏幕上看不到任何内容。
我还想念什么?
答案 0 :(得分:0)
首先,在情节提要viewcontroller中检查您的 webViewContainer 视图是否已连接。如果已经连接并且约束设置正确。然后以这种方式对webview进行约束。从 self.view 中添加约束,而不是从 self.webview 中添加约束,添加到容器中webview是父视图的子级,因此最好将self.view的约束添加到您的webView。希望这会起作用。
self.view.addConstraint(NSLayoutConstraint(item: webView, attribute: .trailing, relatedBy: .equal, toItem: self.webViewContainer, attribute: .trailing, multiplier: 1, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: webView, attribute: .leading, relatedBy: .equal, toItem: self.webViewContainer, attribute: .leading, multiplier: 1, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: webView, attribute: .top, relatedBy: .equal, toItem: self.webViewContainer, attribute: .top, multiplier: 1, constant: 0))
self.view.addConstraint(NSLayoutConstraint(item: webView, attribute: .bottom, relatedBy: .equal, toItem: self.webViewContainer, attribute: .bottom, multiplier: 1, constant: 0))