如何在swift中为tabbar徽章计数动画

时间:2017-07-25 10:23:47

标签: ios iphone swift animation uitabbarcontroller

我想在标签栏上设置徽章计数,例如Bouncing Animation。有没有人用本机UITabBarController实现它。我没有使用任何第三方类在我的项目中添加UITabBarController。

1 个答案:

答案 0 :(得分:3)

在我与你分享代码之前,我会做一些这样的事情  首先,我创建了两个函数 第一个是:

func loopThrowViews(view:UIView){
    for subview in (view.subviews){
        let type = String(describing: type(of: subview))
        print(type)
        if type == "_UIBadgeView" {
            print("this is BadgeView")
            animateView(view: subview)
        }
         else {
            loopThrowViews(view:subview)
        }

    }
}

此函数获取视图并循环抛出其所有子视图,直到找到徽章View然后它调用animate方法这个

  func animateView(view:UIView){
let shakeAnimation = CABasicAnimation(keyPath: "position")
shakeAnimation.duration = 0.05
shakeAnimation.repeatCount = 50
shakeAnimation.autoreverses = true
shakeAnimation.fromValue = NSValue(cgPoint: CGPoint(x:view.center.x - 10, y:view.center.y))
shakeAnimation.toValue = NSValue(cgPoint: CGPoint(x:view.center.x + 10, y:view.center.y))
view.layer.add(shakeAnimation, forKey: "position")
}

您可以使用自己的动画替换此方法中的代码

您需要的只是在想要为徽章设置动画时调用此方法

 loopThrowViews(view: self.tabBarController!.tabBar)

结果将是这样的

enter image description here

这里的完整示例https://github.com/AliAdam/AnimateTabbarBadgeView