iOS-WKWebView未正确添加到iPhone 6中的子视图中



我正试图通过程序将WKWebView添加到我的webViewContainer(类型=UIVIew(中,作为subView。当我在iPhone 11 iOS 13.3中测试时,下面的代码非常有效,但在iPhone 6 iOS 11.0.1中则不然。问题是webViewContainerself.view具有leading(值=10(和trailing(值=100(空间。当我在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)

任何类型视图的Frame属性由四个属性组成:x、y、width和height。在您的代码中,您唯一要做的就是使用以下代码设置宽度和高度属性;

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

我相信你的webViewContainer有x:0和y:0的值,因为你用.zero框架初始化了你的webView,所以这些值是相同的然而,情况可能并非总是如此当请求更改webViewContainer框架时,它会引起麻烦。

如果我没有错的话,你希望你的webView与你的webViewContainer完全在同一个位置。为了实现这一点,应该解释框架和边界属性之间的差异。

是视图与其父视图的相对位置。但是,边界属性是指其相对于自身空间的坐标。

有了这些差异的解释,为了实现你想要做的事情,简单地更换这条线相对更安全;

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

具有以下内容;

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

当超视图(在本例中为webViewContainer(的边界发生更改时,autoresizing mask属性将更改webView的框架。

相关内容

  • 没有找到相关文章

最新更新