WKWebView 添加为子视图

Posted

技术标签:

【中文标题】WKWebView 添加为子视图【英文标题】:WKWebView add as a subview 【发布时间】:2017-09-10 11:56:11 【问题描述】:

ios 8.0+ 开始,我应该使用 WKWebView,但在 official Apple documentation 中,他们通过将视图设置为 WKWebView 来添加它。出于多种原因,我需要将其添加为子视图。

    我必须在WKWebView 上方添加按钮/标签。 我可以通过在情节提要中添加UIView然后通过代码将其设置为WKWebView来添加它,这样看起来比通过代码添加它更整洁。

我的代码:

@IBOutlet weak var container: UIView!

private var wkWebView: WKWebView!

override func loadView() 
    let webConfig = WKWebViewConfiguration()
    wkWebView = WKWebView(frame: .zero, configuration: webConfig)
    wkWebView.uiDelegate = self


override func viewDidLoad() 
    super.viewDidLoad()

    container = wkWebView

    let url = URL(string: "https://google.com")
    let request = URLRequest(url: url!)
    wkWebView.load(request)

我试过这个:WKWebView Add to SubView

我也尝试了container.addSubview 方法,该方法因 nil 指针而崩溃。

每次我加载应用程序时,都会出现黑屏。

有什么想法吗?

【问题讨论】:

你试过容器视图控制器吗? 【参考方案1】:

您应该将WKWebView 的实例作为子视图添加到给定视图:

view.addSubview(wkWebView)

您可以设置它的框架、为其添加约束等,就像使用 UIView 一样。

【讨论】:

奇怪的是苹果强迫你在那里使用新版本的 WKWebView,但他们没有将它添加到情节提要中...... @SamuelKodytek 确实很奇怪,我同意。但是,这是一种从代码中执行相同操作的简单(也是唯一)方法。

以上是关于WKWebView 添加为子视图的主要内容,如果未能解决你的问题,请参考以下文章

WKWebView 添加到子视图

无法显示添加到 WKWebView 的子视图

将标题视图添加到 WKWebView ScrollView

WKWebView 添加到子视图,并将大小设置为等于父视图?

ios - 将子视图添加到 JS 对话框下方的 WKWebView

隐藏WKWebView避免VoiceOver识别ios