在我的项目中,我有一个视图控制器,我希望将WKWebView显示在另一个名为viewForEmbeddingWebView的UIView中,该视图是我在故事板中创建的(图片中的灰色)。
我在ViewController中实现了这个逻辑:
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
var webView: WKWebView!
@IBOutlet weak var viewForEmbeddingWebView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
webView = WKWebView(frame: viewForEmbeddingWebView.frame, configuration: WKWebViewConfiguration() )
self.viewForEmbeddingWebView.addSubview(webView)
self.webView.allowsBackForwardNavigationGestures = true
let myURL = URL(string: "https://www.apple.com")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
}
它显示了WKWebView但边界看起来不对(第一种:它不适合viewForEmbeddingWebView的边界,第二种:顶部有一个白色间隙)。我已经读过,我必须在苹果公司的网站https://developer.apple.com/reference/webkit/wkwebview上使用WKWebView,但他们的例子不是我的情况,因为他们只展示如何处理在整个View中加载WKWebView的情况视图控制器。但是我需要将它嵌入到另一个视图中,因为我以后还需要另一个ui围绕这个WKWebView。在WKWebView之前有WebView,但是自iOS 8出现以来我们必须使用WKWebView。请帮助,因为我检查了很多材料,但没有找到适合Swift 3和Xcode 8的答案。
我在iOS 10.2中使用Xcode 8和Swift 3。
答案 0 :(得分:16)
你想像这样初始化WKWebView
(Swift 3.0):
webView = WKWebView(frame: viewForEmbeddingWebView.bounds, configuration: WKWebViewConfiguration())
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
self.viewForEmbeddingWebView.addSubview(webView)
答案 1 :(得分:0)
WKWebView Swift 5或自定义WKWebView(不建议使用Webview) 请点击下面的Apple链接获取WKWebView- https://developer.apple.com/documentation/webkit/wkwebview
如果要在自定义视图中添加WKWebView。请遵守守则。
import WebKit
class OpenControllerURL: UIViewController,WKNavigationDelegate , WKUIDelegate {
@IBOutlet weak var CustomView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://developer.apple.com/documentation/webkit/wkwebview"!)
let request = URLRequest(url: url!)
let webView = WKWebView(frame: self.CustomView.frame)
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight] //It assigns Custom View height and width
webView.navigationDelegate = self
webView.load(request)
self.CustomView.addSubview(webView)
}
#快乐编码!!!