更新完ipad,顶部出现了悬浮导航栏,样式如下
只需要在UITabBarController中实现如下代码即可移除顶部tabbar,恢复原有样式
if (@available(iOS 18, *)) {
self.traitOverrides.horizontalSizeClass = UIUserInterfaceSizeClassCompact;
}
在 iPadOS 上,使用 UITraitOverrides 可以强制窗口表现为 Compact 或 Regular 模式。这两种模式主要通过 UIUserInterfaceSizeClass 来定义,用于描述界面布局的尺寸类别。下面是它们的主要区别:
-
Compact 模式
• 特点:
• Compact 模式表示紧凑布局,通常用于较小的屏幕或窗口。
• 典型情况下,iPhone 竖屏模式和 iPad 上的 Slide Over 窗口(侧拉窗口)都会使用 Compact 模式。
• 在 Compact 模式下,界面元素通常会缩减,侧边栏(如 UISplitViewController 的 primary view)可能会隐藏,以节省空间。
• 使用场景:
• iPad 的 Split View(分屏)时,应用一侧的视图可能会呈现为 Compact 模式,尤其是在较窄的分屏布局中。
• 在 iPad 上使用 Slide Over(悬浮窗口)时,窗口通常是 Compact 模式。
• 布局特性:
• TabBar 和 NavigationBar 可能会变得紧凑,并且可能使用分段控制(Segmented Control)来切换界面。 -
Regular 模式
• 特点:
• Regular 模式表示宽敞的布局,通常用于较大屏幕或宽屏模式。
• 典型情况下,iPad 的主窗口在全屏和横屏模式下通常会使用 Regular 模式。
• 在 Regular 模式下,应用的侧边栏和工具栏通常会显示更多的内容,界面会显得更加开放。
• 使用场景:
• iPad 的 Split View(分屏)时,应用两侧的视图在较宽的分屏布局中会呈现为 Regular 模式。
• iPad 的主窗口在全屏或窗口模式下(如果窗口足够大)通常是 Regular 模式。
• 布局特性:
• 支持更多的界面元素和控件,比如显示完整的 UISplitViewController 侧边栏、工具栏、以及导航菜单等。
使用 UITraitOverrides 强制切换示例
if (@available(iOS 17.0, *)) {
UIWindow *window = self.view.window;
UITraitOverrides *overrides = [UITraitOverrides new];
overrides.horizontalSizeClass = UIUserInterfaceSizeClassCompact; // 或者 UIUserInterfaceSizeClassRegular
window.traitOverrides = overrides;
}
通过上面的代码,可以强制窗口的 horizontalSizeClass 为 Compact 或 Regular。
主要区别总结
特性 | Compact 模式 | Regular 模式 |
---|---|---|
界面布局 | 紧凑,简化界面元素 | 宽敞,显示完整界面元素 |
适用设备和场景 | Phone、iPad 小窗口 | iPad 全屏或大窗口 |
常见用途 | Slide Over、Split View | 全屏应用、主窗口 |
侧边栏显示 | 通常隐藏或简化 | 通常显示完整的侧边栏 |