如何在 SwiftUI 中向 TabItem 标签添加突出显示

问题描述

我有一个带有自定义图标的 TabView - 像这样:

    PastView( settings ).tabItem 
    {
        Image("past")
        Text("Past")
    }.tag(1)

效果很好 - 但只是文本颜色的变化非常微妙 - 哪个标签是“当前”并不明显。我想通过对图像做一些事情来使其更加明显。这些我都试过了

      Image("past").shadow( radius:5 )
      Image("past").border( Color.red,width:8 )
      Image("past").background( Color.green )

但它们都没有任何效果 - 我真的不明白为什么

解决方法

尝试将“.accentColor(.red)”添加到 TabView。

, SwiftUI 中的

TabItem 图像目前自定义非常有限。即使在 UIKit 中,您也会对 ImageView 容器而不是图像本身进行这些更改。

设计选中和未选中版本的图标,然后按如下方式使用它们。您可能还想在资产目录中为暗模式创建不同版本的图标。

@State private var selectedTab = 0
    
    var body: some View {
        TabView(selection: $selectedTab) {
            ViewA()
                .tabItem {
                    selectedTab == 0 ? Image("past-selected") : Image("past-unselected")
                }.tag(0)
            
            ViewB()
                .tabItem {
                    selectedTab == 1 ? // etc ...
                }.tag(1)
        }
    }