SuperAPI AI 工具集

iphone-duo-capacitor

前端与建站

查看项目

更新于 10-16 01:17

技能介绍

用途:帮助 Capacitor 或 Ionic 应用适配 iPhone Duo(苹果首款折叠 iPhone)。核心前提是 WebKit 27.1 虽实现 Device Posture 与 Viewport Segments,但两者位于仅 Safari 可开启的实验性标志后;Capacitor 运行在自身无法控制标志的 WKWebView 中,因此 navigator.devicePosture、device-posture 媒体查询和 env(viewport-segment-*) 变量均缺失,需做特性检测并假设其不存在。

第一层(无需原生代码):信任安全区且不假设对称,iOS 会把栏移到某一侧,实测 env(safe-area-inset-right) 为 84px,退出垂直栏时变为 env(safe-area-inset-top) 82px,形如 width - env(safe-area-inset-left) * 2 的写法在该设备上是缺陷;按需读取尺寸而非缓存,优先容器查询与 %/fr 布局;按尺寸类而非设备检测分支,外屏为 compact 宽度、内屏为 regular 宽度,实测内屏横屏 951×669、外屏 466×678;宽屏时把导航移到侧边栏。

第二层(需原生侧):reservedRegions(kind:options:) 提供折叠与摄像头位置,UIHingeInteraction 提供铰链角度,verticalBarEdge 指示栏所在边缘,traitCollection 提供尺寸类。注意平放时折叠区域报告为 inactive,需 options: .includeInactive;UIHinge.status 更新滞后,两者可用时以角度为准。

可用现成桥接:npm install @erkamyaman/capacitor-foldable 后执行 npx cap sync,再 import { Foldable, installFoldablePolyfill } 并 await installFoldablePolyfill(),通过 Foldable.getFoldState() 与 addListener('foldStateChange', ...) 使用;该 MIT 插件同时补齐 Device Posture 与 Viewport Segments,并在 <html> 上设置 --fold-left、--fold-width 等变量,也覆盖 Android 折叠屏。

Ionic 的 ion-tabs 是 HTML,原生栏移动时仍留在底部,可用样式表改为侧边胶囊,或用 @rdlabo/ionic-theme-ios27 重定位现有控件。建议顺序:审计安全区对称假设、停止缓存尺寸、为宽屏设计真实布局、加入插件并特性检测标准 API,最后才考虑铰链角度效果。前三步无需原生代码,第四步需 Xcode 27.1 模拟器测试。