swiftui中设置建议最多5个tabItem项,多个tabItem项会被自动折叠起来

news2024/11/19 2:19:22

在swiftui中设置底部的菜单栏的时候,最多建议设置5个,如果超过了,会被自动折叠到More中,点击More就会出现类似list的样式显示,不是很友好。

最多按照5个默认设置的话,就会正常全部显示出来:

测试代码:

//
//  SwitchTab.swift
//  SwiftBook
//
//  Created by song on 2024/7/4.
//

import SwiftUI

enum TabType: Int, Hashable {
    case home
    case videos
    case message
    case seting

    var title: String {
        switch self {
            case .home:
                return "Home"
            case .videos:
                return "Videos"
            case .message:
                return "Message"
            case .seting:
                return "Setting"
        }
    }

    var image: String {
        switch self {
            case .home:
                return "house.fill"
            case .videos:
                return "video.fill"
            case .message:
                return "message.fill"
            case .seting:
                return "printer.fill"
        }
    }
}

struct SwitchTab: View {
    @State private var selectedTab: TabType = .home

    var body: some View {
        TabView(selection: $selectedTab) {
            VStack {
                Color.red.overlay(content: {
                    Button(action: {
                        selectedTab = TabType.message
                    }, label: {
                        Text("Go to Message page").padding().background().cornerRadius(10, antialiased: true)
                    })
                })
            }
            .frame(width: .infinity, height: .infinity)
            .ignoresSafeArea(edges: .top)
            .tabItem {
                Text("首页")
                Image(systemName: "house.fill")
            }
            .tag(TabType.home)

            Color(.blue)
                .ignoresSafeArea(edges: .top)
                .tabItem {
                    Text("消息")
                    Image(systemName: "message.fill")
                }
                .tag(TabType.message)

            Color(.purple)
                .ignoresSafeArea(edges: .top)
                .tabItem {
                    Text("视频")
                    Image(systemName: "video.fill")
                }
                .tag(TabType.videos)
                .badge(/*@START_MENU_TOKEN@*/10/*@END_MENU_TOKEN@*/)

            Color(.brown)
                .ignoresSafeArea(edges: .top)
                .tabItem {
                    Text("设置")
                    Image(systemName: "printer.fill")
                }
                .tag(TabType.videos)

            Color(.cyan)
                .ignoresSafeArea(edges: .top)
                .tabItem {
                    Text("我的")
                    Image(systemName: "iphone.gen3.radiowaves.left.and.right.circle.fill")
                }
                .tag(TabType.videos)
        }
    }
}

#Preview {
    SwitchTab()
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1896575.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

idea如何连接gitee仓库

1.先在idea上登录gitee账号 在gitee官网上生成令牌。 点击生成新令牌。 复制到idea上就行了。然后登陆成功。 2.连接gitee 把项目的https克隆到idea中就行了。

谷粒商城学习-10-docker安装mysql

文章目录 一,拉取MySQL镜像1,搜索MySQL的Docker镜像2,拉取MySQL镜像3,查看已经拉取的镜像 二,创建、启动MySQL容器1,使用docker run创建启动容器2,使用docker ps查看运行状态的容器3&#xff0c…

深入了解图解并发线程

1. 线程状态 要求 掌握 Java 线程六种状态掌握 Java 线程状态转换能理解五种状态与六种状态两种说法的区别 六种状态及转换 分别是 新建 当一个线程对象被创建,但还未调用 start 方法时处于新建状态此时未与操作系统底层线程关联可运行 调用了 start 方法&#…

docker集群部署主从mysql

搭建一个mysql集群,1主2从,使用docker容器 一、创建docker的mysql镜像 下次补上,因为现在很多网络不能直接pull,操作下次补上。 二、创建mysql容器 创建容器1 docker run -it -d --name mysql_1 -p 7001:3306 --net mynet --…

Portainer 是一个开源的容器管理平台-非常直观好用的Docker图形化项目

在这个容器化技术大行其道的时代,Docker和Kubernetes几乎成了技术圈的新宠。可是管理起容器来,有时候还是有点头大。命令行操作对于某些小伙伴来说,可能还是有点不太友好。 今天开源君分享一个叫 Portainer 的开源项目,一个用来简…

Zabbix 配置grafana对接

zabbix对接grafana简介 Zabbix与Grafana对接可以实现更加丰富和美观的数据可视化,可以利用Grafana强大的可视化功能来展示Zabbix收集的数据。 Grafana 本身是提供了Zabbix的对接插件,开箱即用,安装好了之后点击 enable 一下就能启用。然后就…

Mysql 的第二次作业

一、数据库 1、登陆数据库 2、创建数据库zoo 3、修改数据库zoo字符集为gbk 4、选择当前数据库为zoo 5、查看创建数据库zoo信息 6、删除数据库zoo 1)登陆数据库。 打开命令行,输入登陆用户名和密码。 mysql -uroot -p123456 ​ 2)切换数据库…

macOS版ChatGPT更新:修复AI对话纯文本存储问题

猫头虎 🐯 建联猫头虎,商务合作,产品评测,产品推广,个人自媒体创作,超级个体,涨粉秘籍,一起探索编程世界的无限可能! macOS版ChatGPT更新:修复AI对话纯文本…

鸿蒙系统的开发与学习

1.开发工具的下载 DevEco Studio-HarmonyOS Next Beta版-华为开发者联盟 安装、环境配置时,建议 自定义目录 注意:路径中不要有 中文、特殊字符。 2.ArkTS基础总结 1)三种数据类型 ① string 字符串:描述信息 ② number 数…

内网学习第6天 liunx定时任务 环境变量和权限配置,以及数据库提权

内网学习的第5天呢??我就没有写,那个主要就是利用内核漏洞以及suid,来进行提权的。 我在虚拟机上面进行提权,我没有成功,我本地的虚拟机呢,扫出来的漏洞poc也没有让我提权成功。所以我就没有写…

《简历宝典》01 - 一文带你学会如何写一份糟糕透顶的简历

我们每个人几乎都会面对找工作这件事,而找工作或者说求职首先就是要写一份简历。今天狗哥将以一个不同的视角带你写一份无与伦比,糟糕透顶的求职简历,说实话,其实几年前,我就是这么写的。 目录 1. 文件名 2. 基本信…

2024年新考纲下的PMP考试有多难?全面解读!

一、PMP考试是什么,PMP证书有什么用? PMP(Project Management Professional)是指项目管理专业人士。PMP考试由美国PMI发起,旨在严格评估项目管理人员的知识和技能,以确定其是否具备高品质的资格认证。 PM…

新手入门:无服务器函数和FaaS简介

无服务器(Serverless)架构的价值在于其成本效益、弹性和扩展性、简化的开发和部署流程、高可用性和可靠性以及使开发者能够专注于业务逻辑。通过自动化资源调配和按需计费,无服务器架构能够降低成本并适应流量变化,同时简化开发流…

去中心化技术对云计算的潜在影响与应用

随着去中心化技术如区块链的发展,云计算领域也面临着新的变革与挑战。本文将深入探讨去中心化技术对云计算的潜在影响及其应用前景,从技术基础到实际案例,逐步揭示这一新兴领域的发展趋势与可能带来的革新。 1. 介绍:云计算的现状…

Jackson与Json、Json和各种Java数据类型的互相转化

jackson是什么 json是最常用的数据交换格式 Jackson是最流行的Json库 首先对于这种JSON序列化的库其实有非常多,比如我们熟悉的Gson,Fastjson等等,当然技术没有完全的好坏,但是从使用情况和社区生态等方面综合看来,Ja…

重塑财务团队核心任务,推动企业采取新行动

众所周知,大部分企业都拥有传统意义上的财务规划职能,其主要任务是去控制企业的关键利益,但随着市场复杂性的提高和行业领域的多样性,每个财务团队负责的内容和承担的角色将有所变化。这也是财务功能多年来随着市场变化而不断演变…

《Attention is all you need》通俗解读,彻底理解版:注意力机制的运算

这是《Attention Is All You Need》通俗解读的第3篇,前文见这里: 《Attention is all you need》通俗解读,彻底理解版:part1 《Attention is all you need》通俗解读,彻底理解版:part2 最近为了撰写这部…

1688商家数据采集软件使用方法|阿里1688商家信息采集软件

大镜山阿里1688商家数据采集使用方法 打开如下图的窗口,输入采集的关键词,再点“开始采集”和“获取手机”即可。 等待采集完成即可! 点”导出“,即可把采集结果导出。 如果需要按1688网站过滤条件过滤数据后采集的话&#xff…

通义千问接入进阶:流式、文件、图片、上下文

通义千问接入SSE 接入流式对话、上下文对话、图片对话、文件对话 上篇文章有很多小伙伴再问:开启了流式(SSE)如何以API的形式返回数据呢? 这篇文章就来给大家解惑。 实现过程 如何生成key和模型类型请翻找之前的文章&#xf…

远程控制电脑的4个方法,不受地域限制,探索未来办公的无限可能

在数字化浪潮席卷全球的今天,远程控制电脑已不再是科幻电影里的情节,而是我们触手可及的现实,是现代科技所赋予的真实能力。远程控制电脑进行办公已成为越来越多人的选择,不仅让生活更加便捷,还在一定程度上提高了工作…