为什么我可以在框架设置为 .zero 时看到我的 WKWebView

Why I can see my WKWebView while its frame set to .zero

所以我试图以这种方式加载 webView 而不是故事板

    override func loadView() {
    let config = WKWebViewConfiguration( )
    webView = WKWebView(frame: .zero, configuration : config)


    webView.navigationDelegate = self

    view = webView


}
override func viewDidLoad() {
    super.viewDidLoad()

    let url = URL(string: "https://vk.com")!
    webView.load(URLRequest(url: url))
    webView.allowsBackForwardNavigationGestures = true 
}

很明显,webView 的框架是零,我不应该在屏幕上看到任何东西,但我看到了完整的 webView window。拜托,也许我没有考虑到一些重要的事情?

与其将 webView 设置为视图控制器的主视图,不如将其添加为子视图

override func loadView() {
    let config = WKWebViewConfiguration( )
    webView = WKWebView(frame: .zero, configuration : config)


    webView.navigationDelegate = self

    view = UIView()
    view.addSubview(webView)
}

默认情况下,视图控制器的 view 属性 占据完整的高度和宽度。

使用WKWebView作为视图控制器的根视图是完全没问题的。只是根视图的框架 属性 将被忽略,因为它由父视图控制器或展示控制器决定。