gpt4 book ai didi

iphone - 是否可以自定义 UITabBarItem 角标(Badge)?

转载 作者:可可西里 更新时间:2023-11-01 03:39:22 28 4
gpt4 key购买 nike

下面的问题和我的类似。

How to use a custom UIImage as an UITabBarItem Badge?

是否可以使用背景图像而不是自己绘制?我认为这很好,因为我的应用程序将只使用 1 位数的 badgeValue。

如果真的不可能,我想知道我们是否可以更改角标(Badge)颜色。以下问题的答案并没有真正帮助。

Is it possible to change UITabBarItem badge color

最佳答案

这是您最好的选择。在文件范围内添加此扩展名,您可以根据需要自定义角标(Badge)。只需在您的任何 Root View Controller 中调用 self.tabBarController!.setBadges([1,0,2])

需要明确的是,这是一个包含三个项目的标签栏,标记值从左到右。

如果你想添加图片而不是改变addBadge方法

extension UITabBarController {

func setBadges(badgeValues: [Int]) {

var labelExistsForIndex = [Bool]()

for _ in badgeValues {
labelExistsForIndex.append(false)
}

for view in self.tabBar.subviews where view is PGTabBadge {
let badgeView = view as! PGTabBadge
let index = badgeView.tag

if badgeValues[index] == 0 {
badgeView.removeFromSuperview()
}

labelExistsForIndex[index] = true
badgeView.text = String(badgeValues[index])
}

for i in 0...(labelExistsForIndex.count - 1) where !labelExistsForIndex[i] && (badgeValues[i] > 0) {
addBadge(index: i, value: badgeValues[i], color: .red, font: UIFont(name: "Helvetica-Light", size: 11)!)
}

}

func addBadge(index: Int, value: Int, color: UIColor, font: UIFont) {

let itemPosition = CGFloat(index + 1)
let itemWidth: CGFloat = tabBar.frame.width / CGFloat(tabBar.items!.count)

let bgColor = color

let xOffset: CGFloat = 5
let yOffset: CGFloat = -12

let badgeView = PGTabBadge()
badgeView.frame.size = CGSize(width: 12, height: 12)
badgeView.center = CGPoint(x: (itemWidth * itemPosition) - (itemWidth / 2) + xOffset, y: 20 + yOffset)
badgeView.layer.cornerRadius = badgeView.bounds.width/2
badgeView.clipsToBounds = true
badgeView.textColor = UIColor.white
badgeView.textAlignment = .center
badgeView.font = font
badgeView.text = String(value)
badgeView.backgroundColor = bgColor
badgeView.tag = index
tabBar.addSubview(badgeView)

}
}

class PGTabBadge: UILabel { }

关于iphone - 是否可以自定义 UITabBarItem 角标(Badge)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16274017/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com