我正试图通过程序将WKWebView
添加到我的webViewContainer
(类型=UIVIew
(中,作为subView
。当我在iPhone 11 iOS 13.3中测试时,下面的代码非常有效,但在iPhone 6 iOS 11.0.1中则不然。问题是webViewContainer
与self.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的框架。