@capawesome/capacitor-tab-bar

中文文档
0.1.0发布于 2026/10/01MITTypeScriptESM + CJS零依赖构建来源已验证近 30 天下载 2438

在iOS上显示液态玻璃的本地标签栏的电容插件.

中文使用文档
文档目录26 节
  1. 特征
  2. 兼容性
  3. 安装
  4. iOS系统
  5. 配置
  6. 实例
  7. 演示
  8. 使用量
  9. 设置标签并显示标签栏
  10. 监听标签选择
  11. 在程序上选择标签
  12. 更新徽章
  13. 自定义颜色
  14. 离子框架
  15. API 密码
  16. 隐藏( c)
  17. 选择 TabById(...)
  18. 设置颜色(...)
  19. 设置标签(...)
  20. 显示 ()
  21. 添加倾听器( 未选中),...)
  22. 删除所有收听器( )
  23. 接口
  24. 通讯
  25. 更改日志
  26. 许可证

电容标签栏插件

显示原生插件 选项卡栏 iOS上有"液态玻璃".

特征

  • 🫧 液体玻璃:将iOS 26上的原生液体玻璃标签栏和更早版本的经典标签栏进行渲染.
  • 🧭 标签: 使用您的资产目录中的 SF 符号或图像作为图标并显示徽章 .
  • 🎨 颜色: 自定义所选和未选标签的颜色.
  • 📐 安全区: 扩展网页视图的下层安全区域,所以您的内容从未被标签栏所覆盖.
  • 🚀 发射配置: 显示启动时的标签栏, 不等待您的网络应用程序 .
  • 📦 可可花和SPM:支持CocoaPods和Swift软件包管理器用于iOS.
  • 🔁 最新数据:总是支持最新的Capacitor版本.

缺少一个功能? 刚刚 打开一个问题 我们看看!

兼容性

插件版本电容版本状态
0.x.x (中文(简体) )>=8.x.x积极支持

安装

你可以用我们的 AI 辅助设置 以安装插件. 添加数据 超级技能 至您的 AI 工具,使用以下命令:

npx skills add capawesome-team/skills --skill capacitor-plugins

然后使用下列提示:

 Use the `capacitor-plugins` skill from `capawesome-team/skills` to install the `@capawesome/capacitor-tab-bar` plugin in my project.

如果你喜欢 手动设置,通过运行以下命令来安装插件,并遵循下面的平台特定指令:

npm install @capawesome/capacitor-tab-bar
npx cap sync

此插件仅可用于 iOS系统。在Android和Web上,所有方法都否认未执行.

iOS系统

标签栏被放置在网页视图上方,而网页视图的下层安全区域设置会由标签栏的高度而增加. 您的网络应用程序必须满足以下要求, 使其内容不被标签栏覆盖 :

  • 这个 viewport 您页面的元标签必须包含 viewport-fit=cover数字 :

    <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
    
  • 这个 ios.contentInset 配置选项必须设置为 never (默认). 与 always,该套件将应用两次.

  • 您的内容必须尊重底层安全区域设置, 例如使用 padding-bottom: env(safe-area-inset-bottom)。 。 。 .

如果您使用 @capacitor/splash-screen,不配置 tabs 在您的电容配置中, 标签栏将显示在喷出屏幕上 。 相反,打电话 setTabs(...) 财务报告和审定财务报表 show() 之后 SplashScreen.hide()。 。 。 .

配置

这些配置值是可用的 :

Prop类型说明自兹
tabsTab[]发射时要显示的标签 。 如果设定了,则从发射中创建并可见标签栏. 使用时不设置此选项 @capacitor/splash-screen,因为标签栏会显示在喷出屏幕上。 仅在iOS上可用.0.1.0 (中文(简体) )
selectedTabIdstring启动时要选择的标签的ID 。 如果没有设置,则选择第一个标签。 仅在iOS上可用.0.1.0 (中文(简体) )
selectedColorstring所选标签的颜色作为十六进制颜色代码 。 如果没有设定,则使用系统默认值. 仅在iOS上可用.0.1.0 (中文(简体) )
unselectedColorstring未选中标签的颜色作为十六进制颜色代码 。 如果没有设定,则使用系统默认值. 对iOS 26和后期没有影响,因为系统决定了液态玻璃上未选取的分页的颜色. 仅在iOS上可用.0.1.0 (中文(简体) )

实例

单位 capacitor.config.json数字 :

{
  "plugins": {
    "TabBar": {
      "tabs": [{ "id": "home", "title": "Home", "systemImage": "house.fill" }],
      "selectedTabId": "home",
      "selectedColor": "#007AFF",
      "unselectedColor": "#8E8E93"
    }
  }
}

单位 capacitor.config.ts数字 :

/// <reference types="@capawesome/capacitor-tab-bar" />

import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
  plugins: {
    TabBar: {
      tabs: [{ "id": "home", "title": "Home", "systemImage": "house.fill" }],
      selectedTabId: "home",
      selectedColor: "#007AFF",
      unselectedColor: "#8E8E93",
    },
  },
};

export default config;

演示

iOS系统
iOS Demo

使用量

以下示例显示如何设置标签栏并响应标签选择.

设置标签并显示标签栏

设置标签并显示标签栏 。 每个标签使用 SF 符号(systemImage)或来自您应用程序资产目录的图像( )image作为它的图标。 仅在iOS上可用 :

import { TabBar } from '@capawesome/capacitor-tab-bar';

const showTabBar = async () => {
  await TabBar.setTabs({
    tabs: [
      { id: 'home', title: 'Home', systemImage: 'house.fill' },
      { id: 'search', title: 'Search', systemImage: 'magnifyingglass' },
      { id: 'inbox', title: 'Inbox', systemImage: 'tray.fill', badge: '3' },
      { id: 'profile', title: 'Profile', image: 'profile-icon' },
    ],
    selectedTabId: 'home',
  });
  await TabBar.show();
};

const hideTabBar = async () => {
  await TabBar.hide();
};

或者,在您的 Capacitor 配置中配置标签以显示启动时的标签栏(参见 配置) (中文(简体) ).

监听标签选择

这个 tabSelected 每次用户点击标签,包括已经选中的标签,都会释放出事件。 仅在iOS上可用 :

import { TabBar } from '@capawesome/capacitor-tab-bar';

const addListener = async () => {
  await TabBar.addListener('tabSelected', event => {
    console.log('Tab selected:', event.id);
  });
};

在程序上选择标签

选择一个标签, 例如在您网络应用中导航后 。 此方法不会释放 tabSelected 活动。 仅在iOS上可用 :

import { TabBar } from '@capawesome/capacitor-tab-bar';

const selectTab = async () => {
  await TabBar.selectTabById({ id: 'search' });
};

更新徽章

打电话 setTabs(...) 重新使用更新的标签。 目前选中的标签仍为选中 。 仅在iOS上可用 :

import { TabBar } from '@capawesome/capacitor-tab-bar';

const updateBadge = async () => {
  await TabBar.setTabs({
    tabs: [
      { id: 'home', title: 'Home', systemImage: 'house.fill' },
      { id: 'search', title: 'Search', systemImage: 'magnifyingglass' },
      { id: 'inbox', title: 'Inbox', systemImage: 'tray.fill', badge: '4' },
      { id: 'profile', title: 'Profile', image: 'profile-icon' },
    ],
  });
};

自定义颜色

设置选中和未选中标签的颜色 。 未提供的颜色被重置为系统默认值。 在iOS 26上和后期,未选取的颜色没有效果,因为系统决定了液态玻璃上未选取的分页的颜色. 仅在iOS上可用 :

import { TabBar } from '@capawesome/capacitor-tab-bar';

const setColors = async () => {
  await TabBar.setColors({
    selectedColor: '#FF2D55',
    unselectedColor: '#8E8E93',
  });
};

离子框架

如果您使用 离子框架,可以替换 ion-tab-bar 使用 iOS 上的本地标签栏,并继续使用 Ionic 路由器进行导航:

  1. 隐藏 ion-tab-bar iOS上的数据:

    .plt-ios ion-tab-bar {
      display: none;
    }
    
  2. 使用路由器导航到已调制的标签, 当路由更改为其它标签时选择本地标签 。 本地标签使用相同的ID tab 您的财产 ion-tab-button 要素。 下例使用Angular,但同一方法与React和Vue配合:

    <ion-tabs (ionTabsDidChange)="handleTabsDidChange($event)">
      <!-- ... -->
    </ion-tabs>
    
    import { Component, OnInit } from '@angular/core';
    import { Router } from '@angular/router';
    import { Capacitor } from '@capacitor/core';
    import { TabBar } from '@capawesome/capacitor-tab-bar';
    
    @Component({
      selector: 'app-tabs',
      templateUrl: 'tabs.page.html',
    })
    export class TabsPage implements OnInit {
      private readonly isIos = Capacitor.getPlatform() === 'ios';
    
      constructor(private readonly router: Router) {}
    
      ngOnInit() {
        if (this.isIos) {
          void TabBar.addListener('tabSelected', ({ id }) => {
            void this.router.navigateByUrl(`/tabs/${id}`);
          });
        }
      }
    
      handleTabsDidChange(event: { tab: string }) {
        if (this.isIos) {
          void TabBar.selectTabById({ id: event.tab });
        }
      }
    }
    
  3. 将您的内容与底部安全区域嵌入, 包括本地标签栏的高度 :

    ion-content {
      --padding-bottom: env(safe-area-inset-bottom);
    }
    

API 密码

隐藏( c)

hide() => Promise<void>

隐藏标签栏 .

标签保存并重置下层安全区域.

仅在iOS上可用.

自: 0.1.0 (中文(简体) )


选择 TabById(...)

selectTabById(options: SelectTabByIdOptions) => Promise<void>

选择带有给定ID的标签 .

此方法不会释放 tabSelected 活动.

仅在iOS上可用.

参数类型
optionsSelectTabByIdOptions

自: 0.1.0 (中文(简体) )


设置颜色(...)

setColors(options: SetColorsOptions) => Promise<void>

设置标签的颜色 .

未提供的颜色被重置为系统默认值.

仅在iOS上可用.

参数类型
optionsSetColorsOptions

自: 0.1.0 (中文(简体) )


设置标签(...)

setTabs(options: SetTabsOptions) => Promise<void>

设置标签栏的标签 .

这将取代所有已存在的标签 . 带有标识的标签 selectedTabId 如果提供,则选中. 否则,如果当前选中的标签的ID仍然存在,或者第一个标签被选中,则该标签将保留选中.

这种方法不会改变标签栏的能见度.

仅在iOS上可用.

参数类型
optionsSetTabsOptions

自: 0.1.0 (中文(简体) )


显示 ()

show() => Promise<void>

显示标签栏 .

标签栏放在屏幕下方和下方 安全区域内置的网页视图会因标签栏的高度而增加.

标签必须首先使用 setTabs(...) 或 tabs 配置 .

仅在iOS上可用.

自: 0.1.0 (中文(简体) )


添加倾听器( 未选中),...)

addListener(eventName: 'tabSelected', listenerFunc: (event: TabSelectedEvent) => void) => Promise<PluginListenerHandle>

用户点击标签时调用 .

如果用户点击已选中的标签, 也会释放此事件 .

仅在iOS上可用.

参数类型
eventName'tabSelected'
listenerFunc(event: TabSelectedEvent) => void

回返情况: Promise<PluginListenerHandle>

自: 0.1.0 (中文(简体) )


删除所有收听器( )

removeAllListeners() => Promise<void>

删除此插件的所有听众 .

仅在iOS上可用.

自: 0.1.0 (中文(简体) )


接口

选择 TabById 选项

Prop类型说明自兹
idstring要选择的标签的ID .0.1.0 (中文(简体) )

设置颜色选项

Prop类型说明自兹
selectedColorstring所选标签的颜色作为十六进制颜色代码 。 如果不提供,则使用系统默认值.0.1.0 (中文(简体) )
unselectedColorstring未选中标签的颜色作为十六进制颜色代码 。 如果不提供,则使用系统默认值。 对iOS 26和后期没有影响,因为系统决定了液态玻璃上未选取的分页的颜色.0.1.0 (中文(简体) )

设置标签选项

Prop类型说明自兹
tabsTab[]要显示的标签 。 每个标签必须有一个独特的ID.0.1.0 (中文(简体) )
selectedTabIdstring要选择的标签的ID 。 如果未提供, 如果当前选中的标签仍然存在, 则保留选中的标签 。 否则,将选择第一个标签 .0.1.0 (中文(简体) )

标签

Prop类型说明自兹
idstring标签的唯一标识 .0.1.0 (中文(简体) )
titlestring分页标题.0.1.0 (中文(简体) )
systemImagestring要用作标签图标的 SF 符号名称 。 就是其中一个 systemImage 或者说 image 必须提供.0.1.0 (中文(简体) )
imagestring用作标签图标的应用程序资产目录中的图像名称 。 图像作为模板图像提供. 就是其中一个 systemImage 或者说 image 必须提供.0.1.0 (中文(简体) )
badgestring标签的徽标值 。 如果不提供徽章,则不显示徽章.0.1.0 (中文(简体) )

插件听筒

Prop类型
remove() => Promise<void>

标签选中事件

Prop类型说明自兹
idstring被窃听的标签的识别码 .0.1.0 (中文(简体) )

通讯

随时更新有关卡帕韦索姆、Capacitor和Ionic生态系统的最新消息和最新消息,因为我们 《卡帕索克通讯》。 。 。 .

更改日志

见 变动情况。 。 。 .

许可证

见 自由主义。 。 。 .

版本与发布记录

@capawesome/capacitor-tab-bar 共发布 2 个版本,首次发布于 2026/10/01;过去 12 个月发布了 2 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.0latest2026/10/011 个月前
0.0.12026/10/011 个月前

关于 @capawesome/capacitor-tab-bar 的常见问题

@capawesome/capacitor-tab-bar 是什么?

在iOS上显示液态玻璃的本地标签栏的电容插件.

如何安装 @capawesome/capacitor-tab-bar?

在项目目录运行 npm install @capawesome/capacitor-tab-bar,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@capacitor/core(>=8.0.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@capawesome/capacitor-tab-bar 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@capawesome/capacitor-tab-bar 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@capawesome/capacitor-tab-bar 可以商用吗?

@capawesome/capacitor-tab-bar 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@capawesome/capacitor-tab-bar 的下载量有多少?

根据 npm 官方下载统计,@capawesome/capacitor-tab-bar 在 2026/10/09 – 2026/11/07 这 30 天内被下载 2,438 次,日均约 81 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@capawesome/capacitor-tab-bar 还在维护吗?

最新版本 0.1.0 发布于 2026/10/01(1 个月前);至今共发布 2 个版本,其中过去 12 个月发布了 2 个;首次发布于 2026/10/01。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。