Highlight
iPadOS 26 给每个 iPad app 都配了菜单栏、可自由缩放的窗口、新的指针,以及位于工具栏左上角的窗口控件,开发者需要把工具栏布局环绕在窗口控件周围以避免出现冗余安全区。
核心内容
iPad 一直夹在 iPhone 和 Mac 之间。屏幕大到足以做多任务,但操作模型又是触摸优先;开发者要么把 iPhone 版直接拉大,要么硬塞一套 Mac 风格的窗口管理。结果是大量 iPad app 用起来像放大的手机 app——空间浪费、多任务别扭、键盘和指针都没用好。
iPadOS 26 给出了一组”建筑材料”来直接解决这个问题(00:54)。每个 app 现在都带菜单栏,可以通过指针顶到屏幕上沿或者从顶部下滑唤出(10:40)。窗口右下角出现一个 handle,拖动就能把全屏 app 缩成浮在桌面上的窗口(05:15)。窗口左上角是新的窗口控件(Window Controls),点击会放大显示三种操作,长按则展开布局快捷方式(05:23)。指针被重新设计成精准跟随输入、1:1 映射的形状,不再磁吸到目标(09:01)。这四件东西合在一起,把 iPad 从”大号 iPhone”升级成了一台可以真正进行多任务的设备。
详细内容
导航:tab bar 优先,sidebar 可互转。 Apple 的建议很明确——如果不确定用哪种,先用 tab bar(02:52)。tab bar 占地小、内容更沉浸,而且可以平滑变形为 sidebar,反向也可以。Music app 就是例子:sidebar 里有一个像 tab bar 的按钮,点一下整个 sidebar 流体地变成 tab bar(02:17)。导航必须能适配宽度变化,浮窗、横竖屏切换都属于”宽度变了”这一类问题,处理方式是一致的(03:23)。重点是:尺寸变化引起的布局调整不能是破坏性的——缩小后再放大,状态要尽量回到起点(03:55)。
工具栏要环绕窗口控件,不要给它腾顶部安全区。 这是这次改动里最容易踩坑的地方(06:00)。没适配 iPadOS 26 的 app,系统会在工具栏上方加一条永久的安全区放窗口控件,结果就是内容区永久被挤掉一条。正确做法是让工具栏自己的布局环绕在窗口控件的位置周围,让它们出现在同一行(06:25)。
多文档要开新窗口,而不是替换当前窗口。 旧的 “Open in Place” 行为——打开新文档时清掉当前上下文——不再推荐(07:23)。新规则是:每个文档开自己的窗口,窗口在关闭前一直存在(07:29)。窗口会累积,于是 app 菜单里多了一个列表显示所有打开的窗口(07:58)。这个列表要好用,前提是每个窗口都有描述性的名字——比如文档标题,而非 app 名字(08:09)。
指针:新形状 + liquid glass 高亮。 老指针是圆形,为了模拟手指(08:48)。新指针换了形状,并且 1:1 直接跟随输入,不再磁吸到按钮上(10:05)。悬停效果也换了——之前是指针自己变形成高亮,现在是一块 liquid glass 的”托盘”直接出现在按钮上方,折射底下的元素来表明当前选中的目标(09:21)。指针在 liquid glass 控件之间移动时,高亮会快速追上指针(09:50)。所有用了自定义指针交互的 app 都需要在新指针下重新测一遍(10:13)。
菜单栏:组织 + 永不隐藏。 自定义菜单的组织顺序是:把所有相关动作放进来,按使用频率排序(不是字母序),按相关性分组,长菜单用子菜单收纳次级动作,每项配 SF Symbol,最常用的配键盘快捷键(11:06 起)。View 菜单由系统提供但内容要自己填——把 tab 加进去并配快捷键,把 sidebar toggle 加进去(12:30)。最关键的一条原则:不要按上下文隐藏菜单项或整个菜单(12:44)。不可用的项应该 dim 而非消失,理由是空间记忆——菜单内容一直变,人就只能每次重新扫描,菜单栏作为可预测界面的价值就没了(13:14)。
核心启发
-
做什么:把工具栏从”占满顶部”改成”环绕窗口控件”。
- 为什么值得做:不改的话,系统会强制加一条永久顶部安全区放窗口控件,你的内容区就永久被挤掉一截;这条改动是 iPadOS 26 适配收益最直接的一项。
- 怎么开始:先在 iPadOS 26 上跑一遍现有 app,截图对比工具栏区域;再用 SwiftUI 的
toolbarplacement 把工具栏左侧让出来,让窗口控件和工具栏按钮在同一行里共存。
-
做什么:把”打开新文档”改成”开新窗口”而非替换当前窗口。
- 为什么值得做:iPadOS 26 的多任务模型假设窗口持久存在,旧的 Open in Place 行为在多窗口工作流里会丢用户上下文;同时每个窗口必须有描述性的名字才能在 app 菜单的窗口列表里被找到。
- 怎么开始:审计所有
openURL/ 文档打开入口,全部走新建 scene;给每个 scene 设一个基于文档标题的userActivity.title,验证方式是在 app 菜单里看窗口列表能不能一眼分辨。
-
做什么:给 app 装一个不会变的菜单栏。
- 为什么值得做:iPad 上每个 app 现在都自带菜单栏,菜单栏的核心价值是可预测——它是 power user 学习你 app 的地图,也是 keyboard shortcut 的发现入口。
- 怎么开始:列出 app 里所有用户可发起的动作,按相关性聚类成菜单,每项配 SF Symbol 和快捷键;不可用时只 disable 不隐藏,整个菜单永不消失。
-
做什么:用新指针重新测一遍所有自定义 hover 交互。
- 为什么值得做:新指针不再磁吸或橡皮筋到目标,旧代码里依赖磁吸效果做命中判断的地方会表现异常;liquid glass 高亮也会替换原有的 hover 形变效果。
- 怎么开始:在 iPadOS 26 模拟器上接外接触控板,逐个跑工具栏、控件群、自定义按钮,关注高亮在控件群之间切换时是否跟手。
关联 Session
- Build an AppKit app with the new design — 把 AppKit app 升级到新设计系统的实操指南。
- Create icons with Icon Composer — 用 Icon Composer 给 iOS、iPadOS、macOS 做统一图标。
- Enhance your app’s multilingual experience — 给多语言用户做无缝切换的本地化体验。
- Bring Swift Charts to the third dimension — Swift Charts 引入 Chart3D,2D 图表扩展到三维空间。
评论
GitHub Issues · utterances