我使用iOS 9和XCode 7.2使我的应用程序使用WkWebView和Swift显示网页。
为了消除可能的错误,我创建了一个只有以下代码的XCode项目,Main.storyboard中没有任何内容。
奇怪的是,在我过去几天运行代码之后,网页只显示“1次”。 StackOverflow上的两个成员确认该代码适用于XCode 8 / Swift 3和Xcode 7.3.1 / iOS 9.3模拟器。
我的xCode是否太旧或者其他问题可能导致它?
import UIKit
import WebKit
class WebViewController: UIViewController {
@IBOutlet var containerView : UIView!
var webView: WKWebView?
override func loadView() {
super.loadView()
self.webView = WKWebView()
self.view = self.webView!
}
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL(string: "https://www.yahoo.com")!
let req = NSURLRequest(URL: url)
self.webView!.loadRequest(req)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
步骤:1在ViewController.swift中导入webkit
import WebKit
步骤:2声明webView的变量。
var webView : WKWebView!
步骤:3添加WKNavigationDelegate的代理
class ViewController: UIViewController , WKNavigationDelegate{
步骤:4在ViewDidLoad中添加代码。
let myBlog = "https://www.google.com/"
let url = NSURL(string: myBlog)
let request = NSURLRequest(URL: url!)
// init and load request in webview.
webView = WKWebView(frame: self.view.frame)
webView.navigationDelegate = self
webView.loadRequest(request)
self.view.addSubview(webView)
self.view.sendSubviewToBack(webView)
所有设备的自动布局的正确方法:
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
let webView = WKWebView()
override func viewDidLoad() {
super.viewDidLoad()
setupWebView()
}
fileprivate func setupWebView() {
webView.uiDelegate = self
webView.translatesAutoresizingMaskIntoConstraints = false
DispatchQueue.main.async {
guard let url = URL(string: "http://www.apple.com") else { return }
self.webView.load(URLRequest(url: url))
}
view.addSubview(webView)
webView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
webView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
webView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
webView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true
}}
在info.plist中:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>