我有一个自定义UIView及其xib。除内容视图外,xib为空。

在相应的类中,加载xib,然后尝试创建一个WKWebView,如下所示:

@IBOutlet var contentView: UIView!

...

Bundle.main.loadNibNamed("CustomView", owner: self, options: nil)
addSubview(contentView)
contentView.frame = self.bounds

let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: self.frame, configuration: webConfiguration)
webView.translatesAutoresizingMaskIntoConstraints = false
contentView.addSubview(webView)

webView.backgroundColor = UIColor.orange    // Just to check visually

在我的UIViewController中:
let v = CustomView.init(frame: frame)
self.view.addSubview(v)

当我运行项目时,当视图控制器出现时,我可以看到带有橙色背景的Web视图,但是它立即消失了,我的代码有什么问题?

最佳答案

注意,webView.backgroundColor不能按预期工作。尝试使用load url函数或调用loadHTMLString进行验证。

只是为了确保它不是布局问题,请使用“调试视图层次结构”(在调试运行应用程序时单击Xco​​de中的双矩形图标)来检查子视图的边界/框架。如果在那里发现问题,则需要添加适当的布局约束。

如果是这样,您还可以对所有上面的addSubview调用使用以下实用程序功能。它通过将子视图的边沿拉伸到另一边(全宽和高)来在另一个视图内添加子视图。

public static func add(_ subView: UIView, in containerView: UIView) {
    containerView.addSubview(subView)
    subView.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint.activate([
        subView.leadingAnchor.constraint(equalTo: containerView.leadingAnchor),
        subView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor),
        subView.topAnchor.constraint(equalTo: containerView.topAnchor),
        subView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor)
        ]
    )
}

关于ios - WKWebView不会出现在自定义UIView中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52185547/

10-12 01:35