Swift5.2 Control BadgeView

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。

Swift 项目底层框架(万能)
在这里插入图片描述

在这里插入图片描述

import UIKit


class ViewController: UIViewController {

     let bageView = UIView()
    //创建两个全局Btn用于其他地方需要调用
     var btn_01 = UIBarButtonItem()
     var btn_02 = UIBarButtonItem()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.white
  
        //初始化view
        buildView()
        //初始化NavBar
        buildNavBar()
        //模拟网络请求回来刷新数据
        simulationNetwork()
    }
    
    //初始化view
      func buildView(){
       view.addSubview(bageView)
       bageView.frame = CGRect(x: 50, y: 150, width: 100, height: 100)
       bageView.backgroundColor = UIColor.yellow
     }
   
   //初始化NavBar
   func buildNavBar() {
     let btn_0 = UIBarButtonItem.init(barButtonSystemItem: .trash, target: self, action: nil)
     let btn_1 = UIBarButtonItem.init(barButtonSystemItem: .trash, target: self, action: nil)
     btn_01 = btn_1
     let btn_2 = UIBarButtonItem.init(barButtonSystemItem: .add, target: self, action: nil)
     btn_02 = btn_2
     self.navigationItem.rightBarButtonItems = [btn_0,btn_1]
     self.navigationItem.leftBarButtonItem = btn_2
   }
    
    //模拟网络请求回来刷新数据
    func simulationNetwork(){
      /**
       iOS11系统下 -(void)viewDidLoad中获取不到UIBarButtonItem的实例,demo为了演示效果做了0.001s的延时操作,
       在实际开发中,badge的显示是在网络请求成功/推送之后,所以不用担心获取不到UIBarButtonItem添加不了badge
       */
      if (UIDevice.current.systemVersion as NSString).doubleValue >= 11.0 {
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.01, execute: {
          self.updateView()
          self.updateNavBar()
          self.updateTarBar()
        })
        return
      }
    }
    
    //刷新View的数量
    func updateView(){
      bageView.fhx.addBadge(number: 11111)
      bageView.fhx.addLimit(number: 6)
      bageView.fhx.moveBadge(x: 1, y: 1 )
      bageView.fhx.setBadgeLabel { (bageLabel) in
        bageLabel.textColor = UIColor.blue
        bageLabel.font = UIFont.systemFont(ofSize: 13)
      }
    }

   //刷新NavBar的数量
    func updateNavBar(){
      // 1.1 左边
      btn_02.fhx.addBadge(number: 1)
      btn_02.fhx.moveBadge(x: -7, y: 5)
      btn_02.fhx.setBadgeLabel { (badgeLabel) in
        badgeLabel.font = UIFont.systemFont(ofSize: 13)
        badgeLabel.textColor = UIColor.blue
      }
      
      // 1.2 右边
      btn_01.fhx.addBadge(number: 99999)
      btn_01.fhx.addLimit(number: 3)
      btn_01.fhx.setBadge(height: 15)
      btn_01.fhx.moveBadge(x: -5, y: 0)
      btn_01.fhx.setBadge(flexMode: .middle)
    }
    
    //刷新RarBar的数量
    func updateTarBar(){
      self.tabBarItem.fhx.addBadge(number: 99999)
      self.tabBarItem.fhx.addLimit(number: 1)
      self.tabBarItem.fhx.setBadge(height: 15)
      self.tabBarItem.fhx.moveBadge(x: -5, y: 0)
      self.tabBarItem.fhx.setBadge(flexMode: .middle)
    }
    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冯汉栩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值