Slide Over 是 iPad 上的一种多任务模式,其中第二个应用程序显示在主应用程序上方的浮动窗口中。该窗口大约占据屏幕宽度的四分之一,可以向左或向右移动,并通过滑动隐藏。根据 Apple Human Interface Guidelines (2025),Slide Over 自 iOS 9 起在所有 iPad 型号上可用,并且是 iPadOS 多任务处理系统的一部分。
要点
Slide Over 是 iPad 独有的多任务模式,在狭窄的浮动窗口中显示第二个应用程序。与 Split View 将屏幕分成两个相等部分不同,Slide Over 位于主界面之上,允许用户快速访问参考资料、即时通讯应用或播放器。
该模式随 iOS 9 与 Split View 一起引入,最初仅支持 iPad Air 2、iPad mini 4 和 iPad Pro。如今,Slide Over 可在所有 iPad 型号上使用,包括第 10 代 iPad 和 iPad mini (A17 Pro)。对于开发者来说,Slide Over 意味着应用程序可以在 320 pt 宽的窗口中显示 — 紧凑的 Size Class。
用户通过从屏幕右边缘滑动或将 Dock 中的图标拖到屏幕右侧来打开 Slide Over。在 Slide Over 窗口中可以启动任何应用程序 — 不需要特殊支持,尽管适配后的应用程序看起来好得多。
Slide Over 作为主窗口上方的独立 UIWindowScene 实现。Slide Over 中的每个应用程序都获得自己的 UIWindowScene 实例,宽度为 320 pt(竖屏方向)。用户在 Slide Over 中可以有一个应用程序 — 启动的第二个应用程序替换第一个。
Slide Over 窗口可以通过拖动窗口顶部的特殊手柄(pill)来移动。如果将窗口拖到左边缘 — 它会固定在左侧。如果将窗口完全向右滑动 — 它会折叠成一个不可见的面板,并通过从右边缘滑动激活。系统会记住最后在 Slide Over 中启动的应用程序。
关键特性 — Slide Over 可以转换为 Split View。如果用户将 Slide Over 窗口拖到上边缘或下边缘,模式会切换为 Split View。两个应用程序都会获得完整的屏幕分割,份额相等。
主要区别在于屏幕空间的分配。Split View 将屏幕分成两个相等或成比例的部分,每个应用程序获得固定区域。Slide Over 不占用主应用程序的空间 — 它保持全屏,而 Slide Over 显示在其上方。
第二个区别 — 焦点。在 Split View 中,两个应用程序同时处于活动状态且可见。在 Slide Over 中,主应用程序失去焦点(收到 onResignActive),而 Slide Over 获得焦点和交互性。当 Slide Over 被隐藏时,焦点返回到主应用程序。
第三个区别 — 场景数量。Split View 要求开发者支持多种宽度。Slide Over 始终具有 320 pt 的宽度 — 恒定的紧凑类。这简化了开发:一个针对此尺寸的自适应布局就足够了。
| 特性 | Slide Over | Split View |
|---|---|---|
| 窗口大小 | 320 pt(固定宽度) | 50%、25% 或 75% 屏幕 |
| 位置 | 在主应用程序上方 | 并排,屏幕分割 |
| 焦点 | 仅 Slide Over 活动 | 两个应用程序都可以活动 |
| Size Class | Compact Width, Regular Height | 取决于比例 |
为了在 Slide Over 中正常运行,应用程序必须支持 Size Class Compact Width。这意味着界面必须适应 320 pt 的宽度。Apple 的主要建议:使用带有自适应约束的 Auto Layout,避免固定宽度,在 iPad 模拟器中使用 Slide Over 测试所有屏幕。
在实践中,适配归结为使用 UIStackView 或带有 VStack/HStack 的 SwiftUI,它们会自动适应可用空间。应用程序中的表格(UITableView)和集合(UICollectionView)如果其单元格使用自调整大小(self-sizing cells),则可以正常工作。
对于 UIKit,使用带有 horizontalSizeClass 检查的 UITraitCollection。如果类等于 .compact — 将界面切换到简化版本:移除多余的列,用 StackView 替换 Sidebar。SwiftUI 通过 @Environment(\.horizontalSizeClass) 自动完成此操作。
当应用程序在 Slide Over 中打开时,其 UIScene 会收到 sceneWillEnterForeground 通知。之后,场景进入 foreground active 状态 — 就像在全屏启动时一样。全屏模式和 Slide Over 之间的生命周期没有区别:sceneWillEnterForeground 和 sceneDidBecomeActive。
当从 Slide Over 返回到全屏模式或隐藏窗口时,场景会收到 sceneDidEnterBackground。如果用户向右滑动 Slide Over(隐藏),应用程序将继续在后台运行,直到另一个 Slide Over 应用程序替换它或系统释放内存。
对于依赖传感器或摄像头的应用程序,Slide Over 可能会成为问题。在 Slide Over 中,摄像头不可用,加速度计可能提供不正确的读数。检查 isDeviceOrientationLocked 或在进入 Slide Over 时强制锁定方向。
常见问题
竖屏方向 — 320 pt。横屏方向宽度可能有所不同,但 horizontalSizeClass 保持为 Compact。这是 Apple 的标准紧凑类。
可以,在 Info.plist 中设置 UIApplicationSupportsMultipleScenes = NO。应用程序将仅在全屏模式下打开,Slide Over 和 Split View 将不可用。
只有一个。在 Slide Over 中启动第二个应用程序会替换当前应用程序。iPad 不支持多个浮动窗口 — 这是 iPadOS 的限制。
两个应用程序共享 iPad 的资源。对于重量级应用程序(游戏、视频),Slide Over 可能会降低帧率。如果应用程序在 Slide Over 中运行,建议限制 draw calls 并禁用动画。
支持。在配备 8.3 英寸屏幕的 iPad mini 上,Slide Over 以相同的模式工作。由于屏幕较小,窗口占据更大的空间百分比,但 UIScene 的行为保持不变。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。