xcode - 在 SwiftUI 中以简单的方式为 TabView tabItem 添加徽章值

标签 xcode swiftui tabview tabitem

是否可以通过简单的方式在 SwiftUI 中为 TabView tabItem 添加徽章值?

像这样(这里是普通的 Swift):

import UIKit

class TabBarController: UITabBarController {

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    self.tabBar.items![2].badgeValue = "7"
}

}

谢谢

最佳答案

SwiftUI 中的 TabViewItem 没有徽章计数属性,因此您必须在 TabViewItem 上手动添加一个 ZStack 并进行一些计算。

struct ContentView: View {
  @State private var badgeNumber: Int = 10
  private var badgePosition: CGFloat = 1
  private var tabsCount: CGFloat = 1

  var body: some View {
    GeometryReader { geometry in
      ZStack(alignment: .bottomLeading) {
        // TabView
        TabView {
          Text("First View")
            .tabItem {
              Image(systemName: "tray.fill")
              Text("First")
          }
        }

        // Badge View
        ZStack {
          Circle()
            .foregroundColor(.red)

          Text("\(self.badgeNumber)")
            .foregroundColor(.white)
            .font(Font.system(size: 12))
        }
        .frame(width: 20, height: 20)
        .offset(x: ( ( 2 * self.badgePosition) - 1 ) * ( geometry.size.width / ( 2 * self.tabsCount ) ), y: -30)
        .opacity(self.badgeNumber == 0 ? 0 : 1)
      }
    }
  }
}

关于xcode - 在 SwiftUI 中以简单的方式为 TabView tabItem 添加徽章值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61022682/

相关文章:

ios - 接受信用卡付款以获取计费服务 iOS 应用程序

ios - 启动AdHoc应用程序时,“进程启动失败:尝试启动应用程序超时”

swift - 如何更新 View 中结构的值

arrays - 在 SwiftUI 中更新/编辑数组元素的最佳方式

javascript - 将 javascript 放入 xcode 项目的更好方法

ios - Swift核心数据多对多关系不保存实体

swift - 如何修复复合修饰符 + 动画导致的 SwiftUI 内存泄漏?

ios - 如何将标签栏添加到表格 View 而不是详细 View

SwiftUI:我可以向 TabView 添加更多 View ,然后添加选项卡项吗?

nativescript - 隐藏 Nativescript-Angular TabView 上的选项卡按钮