ios适配虚拟home键

这篇具有很好参考价值的文章主要介绍了ios适配虚拟home键。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在H5开发过程中遇到一个兼容性问题。iphone手机的虚拟home键会对屏幕底部的内容造成遮挡。要处理此问题,需要清楚安全区域这个概念。

安全区域

根据刘海和虚拟Home键,Apple为其设备提供了屏幕安全区域的视觉规范

  • 竖屏:竖屏的时候,顶部往下44pt,底部往上34pt,中间部分是安全区域。
  • 横屏:而横屏时候则相对复杂一些,因为虚拟指示条通常情况下都是出现在屏幕底部,所以不仅屏幕左右会留出 44pt 的空白位置,屏幕底部也会留出 21pt 的位置。
    ios适配虚拟home键,ios

配置方案

在ios11中我们可以采用view-fit=‘cover’ + safe-area-inset-* 来解决此兼容问题。

关于viewport-fit

viewport-fit 可以设置可视视窗的大小,它有三个属性值:

  • Auto:默认值。这个值不影响初始布局视窗,整个 Web 页面是可视的,与Contain表现一致。
  • Contain:最初的布局视窗和视觉布局视窗被设置为最大的矩形(左图)。
  • Cover:初始布局视窗和视觉布局视窗被设置为设备物理屏幕的限定矩形(右图)。
  • ios适配虚拟home键,ios

关于safe-area-inset-*

各种 iPhone x 都是不规则形状,我们如何控制页面元素到安全区域呢?Apple 把安全区域的位置通过 css 属性提供给了开发者,它们可以通过CSS的constant( )函数来完成:

  • constant(safe-area-inset-top):在Viewport顶部的安全区域内设置量(CSS像素)
  • constant(safe-area-inset-bottom):在Viewport底部的安全区域内设置量(CSS像素)
  • constant(safe-area-inset-left):在Viewport左边的安全区域内设置量(CSS像素)
  • constant(safe-area-inset-right):在Viewport右边的安全区域内设置量(CSS像素)

简单来说我们可以通过 constant( ) 可以获取到非安全边距,再结合 padding 或 margin 来控制页面元素避开非安全区域。 Webkit 在 iOS11 中新增 CSS Functions: env( ) 替代 constant( ),文档中推荐使用 env( ),而 constant( ) 从 Safari Techology Preview 41 和 iOS11.2 Beta 开始会被弃用。在不支持 env( ) 的浏览器中,会自动忽略这一样式规则,不影响网页正常的渲染。为了达到最大兼容目的,我们可以 constant( ) 和 env( ) 同时使用。

.footerClass {
  padding-bottom: constant(safe-area-inset-bottom); /* iOS 11.0 */
  padding-bottom: env(safe-area-inset-bottom); /* iOS 11.2 */
}

解决

1.设置网页在可是区域的布局方式

<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover, minimum-scale=1, maximum-scale=1.0, user-scalable=0">

2.让主题内容控制在安全区域内

body {
  padding-top: env(safe-area-inset-top);
  padding-right: env(safe-area-inset-right);
  padding-bottom: 50px;  /* 兼容不支持 env( ) 的设备  */
  padding-bottom: calc(env(safe-area-inset-bottom) + 50px); /* 在 iphone x + 中本句才会生效 */
  padding-left: env(safe-area-inset-left);
}

参考:https://juejin.cn/post/6963941148163473445文章来源地址https://www.toymoban.com/news/detail-812868.html

到了这里,关于ios适配虚拟home键的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • iOS_适配 iOS16 转屏

    问题1:iOS 16 屏幕旋转报错: [Orientation] BUG IN CLIENT OF UIKIT: Setting UIDevice.orientation is not supported. Please use UIWindowScene.requestGeometryUpdate(_:) 解决:iOS16 UIDevice 不再支持 setValue 方法,使用 UIWindowScene 的 requestGeometryUpdate() 的方法代替 问题2: Xcode13 和 Xcode14 编译出的安装包效果不一致

    2024年02月16日
    浏览(82)
  • 适配 IOS 安全区域

    安全区域指的是一个可视窗口范围,处于安全区域的内容不受圆角(corners)、齐刘海(sensor housing)、小黑条(Home Indicator)影响。 造成这个问题的主要原因就是 iphoneX 之后在屏幕上出现了所谓的刘海屏,而且在屏幕下方加了一条小黑条。 在开发时,需要对顶部和底部预留一

    2024年01月23日
    浏览(119)
  • IOS安全区域适配

    对于 iPhone 8 和以往的 iPhone,由于屏幕规规整整的矩形,安全区就是整块屏幕。但自从苹果手机 iphoneX 发布之后,前端人员在开发移动端Web页面时,得多注意一个对 IOS 所谓 安全区 域范围的适配。这其实说白了就是 iphoneX 之后的苹果手机,在页面上,你需要对顶部和底部多预

    2024年02月03日
    浏览(36)
  • iOS17适配指南-新版

    UIView与UIViewController。可以设置数据为空时的占位视图,增加SymbolAnimations,通过addSymbolEffect()与removeSymbolEffect()方法,可以实现SF Symbols图标的添加与移除动画。 UIPageControl。增加了类型为UIPageControlTimerProgress的参数progress,可根据指定的时间自动切换。 UICollectionViewCompositionalLa

    2024年02月07日
    浏览(64)
  • iOS 16 版本适配

    1、iOS 16 真机调试时需要在设备的设置 — 隐私与安全 — 开发者模式 中打开开发者模式。 2、隐私权限增强,如通过 UIDevice 获取设备名称时,无法获取用户的信息,只能获取设备对应的名称([UIDevice currentDevice].name返回iPhone,不再返回用户自定义的名字) 3、横竖屏,Xcode13.

    2024年02月12日
    浏览(44)
  • IOS 屏幕适配(一)理论篇

    1.1.1 分辨率相关概念 点 (Points): 是iOS开发中引入的抽象单位,称作点。开发过程中所有基于坐标系的绘制都是以 point 作为单位,在iPhone 2G,3G,3GS的年代,point 和屏幕上的像素是完全一一对应的,即 320 * 480 (points), 也是 320 * 480 (pixels) 渲染像素 (Rendered Pixels): Rendered Pix

    2024年02月03日
    浏览(51)
  • iOS17 隐私协议适配详解

            网上搜了很多文章,总算有点头绪了。其实隐私清单最后做出来就是一个plist文件。找了几个常用三方已经配好的看了看,比着做就好了。 WWDC23 中关于隐私部分的更新(WWDC23 隐私更新官网),其中提到了第三方 SDK 的隐私清单和签名,并且要求开发者自 2024 年春

    2024年04月14日
    浏览(39)
  • 2311d游戏引擎适配ios

    原文 通过遵循 arsd:simpledisplay ( v11.0.0 之前)上的一些旧代码, Apple 的文档和 Jacob 的这一惊人贡献桥, 我已从 金属绑定 中删除了所有 extern(Objective-C) 代码,现在,所有 Objective-C 桥接代码都是使用 D的反射 生成的. 因此,给定此例代码: 现在有: 这是如何从 单独编译 中获得 实际优势

    2024年02月02日
    浏览(59)
  • iOS 17 适配 Xcode 15 问题

    在适配 iOS 17 + xcode 15时遇到的问题,记录一下。 1、 Could not build module ‘WebKit’ 解决方案: 选中不能编译的库的xcodeproj,在 Build Phrases - Compile Sources ,选中所有文件, Complier Flags 里删除 -DOS_OBJECT_USE_OBJC=0 可能是三方库的目标版本比较低,cocoapods兼容低版本自动加上了 - DOS_

    2024年02月08日
    浏览(63)
  • iOS原生应用屏幕适配完整流程

    1. 已iPhone 11 布局为设计布局,其他机型已这个来适配 2.变量与控件对应关系 txtViewer: txtAccount   txtpwd seg   btnOk   3.适配方法实现:

    2024年01月19日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包