5.0 KiB
5.0 KiB
iPad Adaptation(技术计划)
1. 计划目标
基于 spec.md,落地“全应用 iPad 适配(含 iOS Widget)”实施方案,确保:
- 客户端所有页面在 iPad 下可用、可读、可交互;
- 以 竖屏 为主目标完成逐页适配与验收;
- iOS Widget 在 iPad 相关尺寸下展示稳定;
- 全过程保持 iPhone 零回归。
2. 默认技术决策
- 适配方式:React Native 断点 + 条件样式(不改 iPhone 基线参数)。
- iPad 判定:
Platform.OS === 'ios' && Math.min(width, height) >= 768。 - 尺寸获取:统一使用
useWindowDimensions(),避免Dimensions.get()静态值问题。 - 布局原则:页面采用“最大内容宽度 + 居中 + 弹性留白”。
- 改造策略:按页面逐个交付,单页完成后冻结,待确认再进入下一页。
3. 工程配置基线(先决条件)
3.1 原生配置核查
app.json中expo.ios.supportsTablet = true(已要求)。- iOS 工程目标设备族支持 iPad(
TARGETED_DEVICE_FAMILY需包含1,2)。 - 方向策略与产品要求一致(当前优先竖屏;若仅竖屏,则 iPad 也收敛为竖屏策略)。
- 避免 iPad 以 iPhone 兼容模式运行(该模式会导致系统黑边)。
3.2 运行模式与验收环境
- iPad 模拟器:至少 1 台主流尺寸(如 11-inch)。
- iPad 真机:至少 1 台(若可用),用于确认系统级显示行为。
- iPhone 回归机型:至少小屏 + 大屏各 1 个。
4. 页面适配实施策略(逐页)
4.1 页面分批顺序
- 启动链路:
splash / consent / index - Onboarding 全流程页
- 主应用页:
home、详情/弹层、设置、收藏等 - 边缘页:
modal、not-found、其他辅助页
4.2 单页改造标准模板
每页按以下模板执行:
- 梳理页面结构:首屏视觉区、正文区、底部操作区、浮层区。
- 抽离 iPad 分支参数:最大宽度、字号、行高、间距、按钮尺寸。
- 保持 iPhone 参数不变:原样式分支保留。
- 自测:
- iPad 竖屏显示完整;
- 文案不截断、按钮可点击;
- iPhone 关键路径不回归。
- 输出截图与验收点,待确认后冻结该页。
4.3 可复用样式基线(建议)
- 页面容器:
flex: 1+width/height: '100%'+alignSelf: 'stretch'。 - 内容最大宽度:按页面类型设置(例如 560/620/680 分级),统一居中。
- 底部操作区:基于安全区与窗口高度计算,不使用硬编码魔法值。
- 文案区:限制最大阅读宽度,iPad 适度增大字号与行高。
- 图片/插画:按比例缩放,优先保持构图稳定,不压缩变形。
5. iOS Widget 适配计划
5.1 覆盖范围
- 小/中/大组件在 iPad 下的展示一致性;
- 文案长度、换行与截断策略;
- 图形与文本的层级、边距、留白;
- 浅色模式基线(深色模式按资源情况补充)。
5.2 实施要点
- 统一组件内边距与字号层级映射;
- 对长文本提供优雅截断(避免溢出与跳变);
- 验证不同语言长度对布局影响;
- 输出尺寸矩阵截图作为最终验收材料。
6. iPhone 零回归保障
- 所有 iPad 适配均以条件分支或断点参数实现;
- 禁止直接覆盖 iPhone 基线字号/间距;
- 每完成一页,执行 iPhone 冒烟回归:
- 启动流程;
- Onboarding 关键交互;
- Home 关键按钮与弹层;
- Settings/Favorites 基础可用性。
7. 验收清单与交付物
7.1 页面级验收清单
- 布局完整:无重叠、无错位、无异常黑边;
- 文案可读:不截断(可接受预期截断场景需说明);
- 交互可用:触控面积合理、按钮不被遮挡;
- 状态一致:加载/空态/异常态显示正常;
- iPhone 回归:关键路径无变化。
7.2 交付物
- 每页适配说明(改动点 + 参数策略);
- iPad 改前/改后截图;
- iPhone 回归截图;
- Widget 各尺寸截图;
- 最终页面覆盖矩阵与验收记录。
8. 分阶段里程碑
-
M1 基线搭建
- 完成原生配置核查与适配基线工具/约定;
- 输出页面清单与验收模板。
-
M2 页面逐页适配
- 按既定顺序逐页改造;
- 每页交付后等待确认,再继续下一页。
-
M3 Widget 收口
- 完成 iPad 尺寸矩阵验证;
- 修复文本/间距/层级问题。
-
M4 全量回归与发布前验收
- iPad 全页验收 + iPhone 零回归确认;
- 形成最终验收文档。
9. 风险与应对
-
风险:页面存在大量固定像素值,局部改动引发联动。
应对:参数分层、按区块替换、单页冻结机制。 -
风险:iPad 多窗口/舞台管理导致尺寸波动。
应对:以竖屏全屏为主验收,同时保留窗口变化最小兼容策略。 -
风险:多语言文案长度影响 widget 与页面稳定性。
应对:统一截断/换行规则,增加长文案样本回归。