首页 > 其他分享 >HTML中获取iOS手机安全区域SafeArea

HTML中获取iOS手机安全区域SafeArea

时间:2023-12-28 20:22:56浏览次数:37  
标签:case topSafeAreaHeight iOS 横屏 竖屏 HTML 34pt SafeArea 21pt

苹果手机iPhone X及以上版本都带有刘海屏,14pro以上版本变成了所谓灵动岛,所以顶部和底部都有一个安全区域。

手机型号尺寸(pt)倍数屏幕(px)状态栏高度顶部安全距离底部安全距离
iPhone14Pro、iPhone15Pro、iPhone15 393 * 852 3 1179 * 2556 54pt 59pt 34pt(竖屏) / 21pt(横屏)
iPhone14ProMax iPhone15ProMax、iPhone15plus 430 * 932 3 1290 * 2796 54pt 59pt 34pt(竖屏) / 21pt(横屏)
iPhone12、iPhone12Pro、iPhone13、iPhone13Pro、iPhone14 390 * 844 3 1170 * 2532 47pt 47pt 34pt(竖屏) / 21pt(横屏)
iPhone12ProMax、iPhone13ProMax、iPhone14Plus 428 * 926 3 1284 * 2778 47pt 47pt 34pt(竖屏) / 21pt(横屏)
iPhone12mini、iPhone13mini 375 * 812 3 1125 * 2436 50pt 50pt 34pt(竖屏) / 21pt(横屏)
iPhoneXS Max、iPhone11ProMax 414 * 896 3 1242 * 2688 44pt 44pt 34pt(竖屏) / 21pt(横屏)
iPhoneX、iPhoneXS、iPhone 11 Pro 375 * 812 3 1125 * 2436 44pt 44pt 34pt(竖屏) / 21pt(横屏)
iPhoneXR、iPhone 11 414 * 896 2 828* 1792 48pt 48pt 34pt(竖屏) / 21pt(横屏)
iPhone6 Plus、iPhone6s Plus、iPhone7 Plus、iPhone8 Plus 414 * 736 3 1242x2208 20pt 20pt ---
iPhone6、iPhone6s、iPhone7、iPhone8、iPhoneSE2、iPhoneSE3 375 * 667 2 750 * 1334 20pt 20pt ---

在web网页中需要根据安全区域从而适当的调整布局,  那么如何获取顶部和底部安全区域的高度呢。直接上代码

const bottomAreaHeight = ref(0)
let safeAreaHeightValue = 0
let topSafeAreaHeight = 0
let bottomSafeAreaHeight = 0
onMounted(() => {
  // 获取底部安全区域的高度
  const isIphone = /iPhone/i.test(navigator.userAgent)

  if (isIphone) {
    safeAreaHeightValue = window.screen.height - window.innerHeight

    if (safeAreaHeightValue >= 44) {
      bottomSafeAreaHeight = 34
    }

    switch (safeAreaHeightValue) {
      case 93:
      case 59:
        topSafeAreaHeight = 59
        break

      case 81:
      case 47:
        topSafeAreaHeight = 47
        break

      case 84:
      case 50:
        topSafeAreaHeight = 50
        break

      case 78:
      case 44:
        topSafeAreaHeight = 44
        break

      case 82:
      case 48:
        topSafeAreaHeight = 48
        break

      case 20:
        topSafeAreaHeight = 20
        break

      default:
        break
    }
  }
  bottomAreaHeight.value = bottomSafeAreaHeight

 为什么是两种数值对应一个相同的值呢,主要原因是iOS端有可能设置Webview的忽略安全距离

import SwiftUI
import WebKit
struct ContentView: View {
    @State var url: String? = "https://www.baidu.com"
    var body: some View {
        SWKWebView(url: $url).edgesIgnoringSafeArea(.all)
        //top 93 bottom 59 all 59
    }
}

#Preview {
    ContentView()
}

拿iPhone15举例来说,edgesIgnoringSafeArea(.all)和edgesIgnoringSafeArea(.bottom),window.screen.height:852,innerHeight:793,差值为59,

 

edgesIgnoringSafeArea(.top)或者不设置时 "innerHeight":759,"screnHeight":852,差值为93。

另外需要注意设置edgesIgnoringSafeArea(.top)和all时顶部如果有返回按钮啥的注意距离顶部的距离,否则有可能造成跑到状态来上去了




标签:case,topSafeAreaHeight,iOS,横屏,竖屏,HTML,34pt,SafeArea,21pt
From: https://www.cnblogs.com/duzhaoquan/p/17933484.html

相关文章

  • 记录--HTML问题:如何实现分享URL预览?
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助1.需求分析为了提高用户对页面链接分享的体验,需要对分享链接做一些处理。以 Telegram(国外某一通讯软件) 为例,当在 Telegram 上分享已做过处理的链接时,它会自动尝试获取链接的预览信息,包括标题、描述和图片......
  • wkhtmltopdf 使用记录
    1、下载安装后,在安装目录能找到两个exe,我这里只用到了pdf。下载地址:https://www.alipan.com/s/nK8bSrpFeH8,这是我自己的网盘。2、在exe目录执行命令:http://192.168.101.4:8080/print.html?adviceIds=1691643171508896425%2C1691643171508896426&patientId=1704026869843139220 ......
  • HTML基础
    【HTML基础】本文档是个人对Pink老师课程的总结归纳及补充,转载请注明出处!一、HTML简介1.1网页1.1.1什么是网页?**网页:**构成网站的基本元素,通常是HTML格式的文件(.htm或.html)必须通过浏览器来阅读。**网站:**利用前端技术制作的网页集合。1.1.2什么是HTML?**超文......
  • Ios苹果开发人员已从app应用程序移除怎么恢复
    Hello亲爱的朋友们大家好!我是咕噜的铁蛋!我经常与各种开发者和用户交流,探讨关于苹果设备和应用的问题。最近,我发现许多开发人员都遇到了一个问题:他们的应用程序被苹果从AppStore中移除了。这对于开发者来说无疑是一个巨大的打击,因为他们花费了大量的时间和精力来开发这些应用程序,并......
  • html 页面打开exe方法
    首先写注册表,里面的路径就是exe的路径WindowsRegistryEditorVersion5.00[HKEY_CLASSES_ROOT\Webshell]@="URL:WebshellProtocolHandler""URLProtocol"=""[HKEY_CLASSES_ROOT\Webshell\DefaultIcon]@="C:\\leenleda\\pager\\caller......
  • flutter IOS 原生交互同一个插件多个方法调用
    由于代码比价简单直接上代码ios/Runner/AppDelegate.swiftimportUIKitimportFlutter@UIApplicationMain@objcclassAppDelegate:FlutterAppDelegate{overridefuncapplication(_application:UIApplication,didFinishLaunchingWithOptionslaunchOption......
  • flutter 添加原生IOS 播放器
    定义播放器FlutterAVPlayer.swiftimportFoundationimportAVKitimportMediaPlayerimportFlutterclassFlutterAVPlayer:NSObject,FlutterPlatformView{privatevar_flutterAVPlayerViewController:AVPlayerViewController;init(frame:CGRect,......
  • HTML学习第七天:JavaScript进阶与事件处理
    在今天的HTML学习中,我进一步深入了JavaScript的学习,特别是事件处理方面。早上,我回顾了昨天学习的JavaScript基础知识,并进行了一些练习,以加深自己的理解。然后,我开始学习事件处理。事件处理是JavaScript中非常重要的一部分,它允许我们响应用户的各种操作,如点击、滑动、键盘输入等。我......
  • css+html 实现带箭头的流程步骤条
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><style>.navs{height:50px;line-height:50px;padd......
  • Sublime Text Html CSS JS 代码整理美化插件
    原文地址:SublimeTextHtmlCSSJS代码整理美化插件使用代码编辑编辑器的好处就是有很多功能可以用,特别是一个就是代码整理优化。在编写代码时,我们经常会遇到代码混乱、缩进不正确或格式不统一等问题。这些问题可能会导致代码难以阅读、维护和调试,降低开发效率。那么我这里说一......