前言

xcode 13.2
ios 15.2

在OC、Swift 中底部是UITabBarController, 但是在SwiftUI中是设置tabItem

SwiftUI使用用 TabView 和 tabItem () 来创建 TabBar

导航视图非常适用于创建层次化的视图栈,让用户可以层层深入数据,但它们对于不相关的数据则不那么合适。 对于那种数据,我们需要用到 SwiftUI 的 TabView,它会在屏幕底部创建一排不带边框的按钮,每次点击不同的按钮显示不同的视图。

除了能让我们点击 tab 项切换视图,SwiftUI 还允许我们通过使用状态来程序化控制当前视图。这种方式需要以下几个步骤:

1、创建一个记录当前正在显示的视图的 @State 属性。

首先是一个记录当前 tab 的状态,把下面这个属性添加到 ContentView:
设置枚举,或者设置int数字都可以

2、把这个属性以 binding 的形式传给 TabView,以便它能够被自动跟踪,并告诉 SwiftUI 对应属性的每种值应该显示哪个 tab。

3、把TableView放到 NavigationView 下面

3.1、使下级页面不再显示底部tabItem

3.2、后续push或当前页面不用再设置NavigationView,(如果设置,会多出一个导航栏的高度)

3.3、设置底部背景色,否则底部是透明颜色

3.4、下面给出了TabView展示的两种方式

具体代码和展示如下

struct ContentView: View {@State private var selection: Tab = .studyenum Tab {case featuredcase list case study case mine}init() {UITabBar.appearance().backgroundColor = .gray //设置背景色,否则背景色为透明颜色}var body: some View {NavigationView { //整体设置,下级页面不会在出现底部tabbarTabView(selection: $selection) {CategoryHome().tabItem{//使用label 创建tabitem图文 Label("Featured", systemImage: "star") }.tag(Tab.featured)LandmarkList().tabItem{Label("List", systemImage: "list.bullet")}.tag(Tab.list)YLStudy().tabItem {  //设置tabitem图文方法if self.selection == .study {Image("tabbar_study_select")} else {Image("tabbar_study")}Text("发现")}.tag(Tab.study)YLMine().tabItem {if self.selection == .mine {Image("tabbar_mine_select")} else {Image("tabbar_mine")}Text("我的")}.tag(Tab.mine)}.accentColor(.red) //设置文字默认选中颜色}}
}

SwiftUI 设置底部TabBar(tabItem)相关推荐

  1. uni-app 底部tabbar设置 底部tabbar样式

    自己不努力,没人会帮你 小程序很常见的底部tabbar按钮该如何设置呢? Tabbar 1. 创建页面 2. 配置tabbar 3. tabbar样式修改 1. 创建页面 目录如下: pages - ...

  2. uniapp小程序底部tabbar图标大小设置

    小程序底部tabbar图标大小设置 在uniapp中小程序的tabbar没有设置图标大小的属性,导致小程序在不同平台打开时图标大小显示的不一样,特别是在电脑微信打开小程序时,底部的图标就会特别大,使得 ...

  3. 小程序tabbar能放分包路径吗_微信小程序之如何自定义底部tabbar导航

    我之前写一个微信小程序,保单万事通,有一个这样的功能 image.png 这个底部导航,如果用小程序自带的tabbar,根本无法实现,所有我想第2种方法来实现 微信小程序文档中,有一种这个方法,但是我 ...

  4. uni-app 微信小程序根据角色动态的更改底部tabbar

    文章目录 1. 需求背景 1.1 源码下载 2. 问题前提及思路 3. 开始撸 3.1 设置 `tabbar.js` 配置不同角色不同的菜单 3.2 设置 `page.json` 3.3 vue 配置 ...

  5. 微信 设置底部导航栏

    转 微信小程序设置底部导航栏目方法 2016年10月27日 10:58:06 阅读数:50830 标签: 微信小程序 收起 个人分类: 微信小程序 微信小程序底部想要有一个漂亮的导航栏目,不知道怎么制 ...

  6. 微信小程序底部tabBar配置

    文章目录 什么是tabBar tabBar节点的配置项 配置tabBar选项的步骤 1. 新增tabBar节点 2. 新增list数组 3. 更改tabBar上文字被选中时的颜色 什么是tabBar ...

  7. vue底部跳转_Vue中底部tabBar切换及跳转

    tabBar.vue文件,写法如下: {{item.title}} tabBar.vue 中 js export default { name: "Tabbar", data(){ ...

  8. 用mpx框架自定义小程序底部tabbar

    小程序[mpx] 用mpx框架自定义小程序底部tabbar 参考小程序官方文档:自定义 tabBar. 1.项目根目录下app.mpx** 1).添加"custom":" ...

  9. 小程序底部tabbar加数字标

    小程序底部tabbar悬浮数字标功能 实现效果如下: 大家都知道小程序的底部,是通过APP,JSON进行配置的,如果想要在下面的tabbar上面做手脚的话,网上搜索是找不到方法的,好多小白见到这种需求 ...

最新文章

  1. koa cluster 使用多进程
  2. 浅入深出之Java集合框架(上)
  3. Spring源码分析之SpringMVC的DispatcherServlet是如何处理Http请求的
  4. 以太坊虚拟机 EVM(4)分布式存储架构设计(FISCO BCOS为例)
  5. 车载中控桌面布局android,安卓车载导航桌面主题
  6. 群控云控SDK开发包(快速开发群控云控微信SCRM客服系统)
  7. 22讲MySQL有哪些“饮鸩止渴”提高性能的方法
  8. 敏捷开发日常跟进系列之三 故事板,看板
  9. java中怎么审阅图片_java – Crucible REST API:无法添加审阅者
  10. 标准单元库的corner简述
  11. 【JPA/ddl-auto】关于JPA下hibernate通过设置ddl-auto完成数据库自动创建表格
  12. JAVA解析stp格式模型_3D模型文件读写.Net SDK
  13. C#操作开机自启动(写进注册表)
  14. 兄弟连视频教程下载地址汇总-2014(转)
  15. 带有功利性的做一件事 ?
  16. 核磁共振、顺磁共振、磁共振成像这些原理你都了解吗
  17. 交付管理——怎样控制项目进度
  18. java-php-python-ssm计算机公共课程学习资源管理系统计算机毕业设计
  19. Revit中复合墙图层的规则和CAD识别翻模墙
  20. python中大批量m3u8文件合并总结

热门文章

  1. jumpstart-6.10.3安装指南
  2. 【181008】VC++猫捉老鼠游戏源代码
  3. 汇编语言:字符串加密
  4. android 主流机型排行榜,10月份Android热门手机机型Top 50排行榜
  5. 为什么我什么都不知道_我什么都不知道,但是还可以
  6. 【转】人际关系的书,我只推荐这三本,其它的根本就不用看了
  7. 智慧园区整体智能化管理平台规划方案
  8. java单数字随机抽奖特效_jquery输入数字随机抽奖特效的简单实现代码
  9. 微软的东西,你不要删.否则学我的,重装系统.
  10. Java包名的命名规则