8

在我的项目中,我有一个视图控制器,我想在其中显示嵌入在另一个 UIView 中的 WKWebView,标题为 viewForEmbeddingWebView,这是我在故事板中创建的(图片为灰色)。

我的视图控制器中标题为 viewForEmbeddingWebView 的灰色视图

我已经在我的 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但他们的例子不是我的情况,因为他们只展示了如何处理加载 WKWebView 的情况ViewController 的整个视图。但我需要将它嵌入到另一个视图中,因为稍后我还需要围绕这个 WKWebView 的另一个 ui。在 WKWebView 之前有 WebView,但自从 iOS 8 出现后,我们必须使用 WKWebView。请帮忙,因为我检查了很多材料,但没有找到适用于 Swift 3 和 Xcode 8 的答案。

我在 iOS 10.2 中使用 Xcode 8 和 Swift 3。

4

2 回答 2

29

你想像这样初始化WKWebView(Swift 3.0):

webView = WKWebView(frame: viewForEmbeddingWebView.bounds, configuration: WKWebViewConfiguration())
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
self.viewForEmbeddingWebView.addSubview(webView)
于 2017-01-20T22:28:55.017 回答
5

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)
}

#快乐编码!!!

于 2020-11-06T10:20:28.693 回答