【问题标题】:iOS - WKWebView not added correctly to its subView in iPhone 6iOS - WKWebView 未正确添加到 iPhone 6 中的子视图
【发布时间】:2021-01-15 08:36:11
【问题描述】:

我正在尝试以编程方式将WKWebView 添加到我的webViewContainer(类型=UIVIew)作为subView。当我在 iPhone 11 iOS 13.3 但在 iPhone 6 iOS 11.0.1 中测试时,下面的代码完美运行。问题是webViewContainerleading(值= 10)和trailing(值= 10)空格和self.view。当我在 iPhone 6 中运行它时,只有leading 受到尊重,trailing 也不受尊重。当我调试时,webViewContainer 和我添加的webView 得到了与webViewContainer 相同的帧。

可能是什么问题?

       let webConfiguration = WKWebViewConfiguration()
        webView = WKWebView(frame: .zero, configuration: webConfiguration)
        webView.frame.size = self.webViewContainer.frame.size
        webView.uiDelegate = self
        webView.navigationDelegate = self
        self.webViewContainer.addSubview(webView)

【问题讨论】:

  • 如果您不介意,可以分享您的约束代码吗?
  • @sekoyaz 我从 xib 文件中进行约束
  • 在添加为子视图 put 和 webView.translatesAutoresizingMaskIntoConstraints = false 之前,您可以检查一下吗?
  • @sekoyaz 好的,我现在检查一下
  • @sekoyaz 没问题。谢谢你:)

标签: ios swift xcode uiview wkwebview


【解决方案1】:

任何一种视图的框架属性都包含四个属性:x、y、宽度和高度。在您的代码中,您唯一要做的就是使用以下代码设置宽度和高度属性;

webView.frame.size = self.webViewContainer.frame.size

我相信您的 webViewContainer 具有 x: 0 和 y: 0 值,并且由于您使用 .zero 帧初始化了 webView,因此这些值是相同的。 但是,情况可能并非总是如此。当请求更改 webViewContainer 框架时会引起麻烦。

如果我没记错的话,您希望您的 webView 与您的 webViewContainer 完全相同。为此,应该解释 frame 和 bounds 属性之间的区别。

Frame 是视图与其父视图的相对位置。然而 bounds 属性是指它相对于自己空间的坐标。

解释了这些差异,要实现你想要做的,简单地替换这一行是相对安全的;

webView.frame.size = self.webViewContainer.frame.size

跟随;

webView.frame = webViewContainer.bounds
webView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

当超级视图(在本例中为 webViewContainer)的边界发生变化时,自动调整掩码属性将更改您的 webView 的框架。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 2017-01-10
    • 1970-01-01
    相关资源
    最近更新 更多