WKWebView横屏视图下忽略右侧安全区域内边距(safe area inset)问题求助
解决思路
你可以按以下三个方向逐步排查调整,就能实现WKWebView横屏时忽略右侧安全区域内边距的需求:
1. 调整webViewContainer的约束逻辑
你当前已经把webView的四边完全对齐webViewContainer,所以如果出现右侧安全区间距,首先要排查webViewContainer本身的约束是否绑定了父视图的安全区域。直接把webViewContainer的trailing约束绑定到父视图的原始边缘,而非安全区域边缘即可:
- 代码实现:给container加trailing约束时,
toItem指定为父视图本身,不要指定为superview.safeAreaLayoutGuide,常量设为0 - 可视化布局实现:如果用Storyboard/Xib,把container的trailing约束的关联对象从「Safe Area」改为「Superview」,常量设为0
2. 关闭WKWebView默认的安全区域适配
iOS 11以上系统的视图默认会自动适配安全区域内边距,你可以主动关闭webView的相关适配属性:
// 初始化webView后添加以下配置 // 禁止自动继承父视图的安全区域内边距 webView.insetsLayoutMarginsFromSafeArea = false // 禁止scrollView自动调整内容内边距适配安全区域 webView.scrollView.contentInsetAdjustmentBehavior = .never
3. 校验H5页面的viewport配置
如果原生侧配置修改后还有间距,需要确认加载的H5页面开启了全屏适配配置,在页面的head标签内添加如下meta配置即可:
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
viewport-fit=cover是专门用来告知WebKit引擎页面要铺满整个设备屏幕,忽略系统默认的安全区域内边距。
内容的提问来源于stack exchange,提问作者Bhulku Jivan
相关产品推荐
相关产品推荐

