微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS-WKWebView未正确添加到iPhone 6中的subView中

如何解决iOS-WKWebView未正确添加到iPhone 6中的subView中

我试图以编程方式将WKWebView作为webViewContainer添加到我的UIVIew(类型= subView)中。当我在iPhone 11 iOS 13.3而不是iPhone 6 iOS 11.0.1中对其进行测试时,以下代码可完美工作。问题在于webViewContainerleading的间距为trailing(值= 10)和self.view(值= 10)。当我在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完全在同一地点。为此,应该说明frame和bounds属性之间的区别。

框架是视图与其父视图的相对位置。但是 bounds 属性是指其相对于其自身空间的坐标。

在解释了这些差异之后,要实现您想要的目标,只需替换此行相对安全;

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

带有以下内容;

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。