SystemBars
SystemBars API 提供了配置设备系统栏/状态栏样式和可见性的方法。此插件已捆绑在 @capacitor/core 中。
此 API 与 Status Bar 插件的区别在于,它仅旨在支持现代的全屏边缘到边缘(edge to edge)使用场景。对于旧版功能,请使用 Status Bar 插件。
| 功能特性 | System Bars | Status Bar |
|---|---|---|
setOverlaysWebView() | 不支持 | 在 iOS 和 Android <= 14(或在启用边缘到边缘退出时为 15)上支持 |
setBackgroundColor() | 不支持 | 支持 |
setStyle() | 支持 | 支持 - 仅顶部状态栏 |
hide()/show() | 支持 | 支持 - 仅顶部状态栏 |
iOS 注意事项
此插件要求在 Info.plist 中将 "View controller-based status bar appearance" (UIViewControllerBasedStatusBarAppearance) 设置为 YES。如需帮助,请阅读关于 配置 iOS 的文档。
状态栏可见性默认为可见,样式默认为 Style.Default。您可以通过在 Info.plist 中添加 UIStatusBarHidden 和/或 UIStatusBarStyle 来更改这些默认值。
Android 注意事项
由于某些旧版本 Android WebView (< 140) 中存在一个 bug,无法通过 CSS env 变量 safe-area-inset-x 获取正确的安全区域值。此插件会将正确的内边距(inset)值注入到名为 --safe-area-inset-x 的新 CSS 变量中,您可以在前端样式中将其用作备用方案:
html {
padding-top: var(--safe-area-inset-top, env(safe-area-inset-top, 0px));
padding-bottom: var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px));
padding-left: var(--safe-area-inset-left, env(safe-area-inset-left, 0px));
padding-right: var(--safe-area-inset-right, env(safe-area-inset-right, 0px));
}
要控制此行为,请使用 insetsHandling 配置设置。
示例
import { SystemBars, SystemBarsStyle, SystemBarType } from '@capacitor/core';
const setSystemBarStyleDark = async () => {
await SystemBars.setStyle({ style: SystemBarsStyle.Dark });
};
const setSystemBarStyleLight = async () => {
await SystemBars.setStyle({ style: SystemBarsStyle.Light });
};
const hideSystemBars = async () => {
await SystemBars.hide();
};
const showSystemBars = async () => {
await SystemBars.show();
};
const hideNavigationBar = async () => {
await SystemBars.hide({
bar: SystemBarType.NavigationBar
})
}
// 仅在 iOS 上设置状态栏动画
const setStatusBarAnimation = async () => {
await SystemBars.setAnimation({ animation: "NONE" });
}
配置
| 属性 | 类型 | 描述 | 默认值 |
|---|---|---|---|
insetsHandling | string | 指定在 Android 上如何处理有问题的内边距(insets)。此选项仅在 Android 上受支持。css = 将包含正确安全区域内边距值的 CSS 变量(--safe-area-inset-*)注入到 WebView 中。disable = 禁用所有内边距处理。 | css |
style | string | 系统栏的文本和图标的样式。 | DEFAULT |
hidden | boolean | 启动时隐藏系统栏。 | false |
animation | string | 显示或隐藏时使用的状态栏动画类型。此选项仅在 iOS 上受支持。 | FADE |
配置示例
在 capacitor.config.json 中:
{
"plugins": {
"SystemBars": {
"insetsHandling": "css",
"style": "DARK",
"hidden": false,
"animation": "NONE"
}
}
}
在 capacitor.config.ts 中:
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
plugins: {
SystemBars: {
insetsHandling: "css",
style: "DARK",
hidden: false,
animation: "NONE"
},
},
};
export default config;