如何在自定义UIBarButtonItem上放置徽章

 宇中尘粒 发布于 2023-01-09 16:16

我有一个带两个按钮的导航栏,一个是后退按钮,另一个是聊天符号.

我这样编写代码:

UIBarButtonItem *_btn=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"back.png"]
                                                      style:UIBarButtonItemStylePlain
                                                     target:self
                                                     action:@selector(goBackToPreviousView)];

self.navigationItem.leftBarButtonItem=_btn;
self.navigationItem.leftBarButtonItem.tintColor = [UIColor blackColor];


UIBarButtonItem *_btn2=[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"chat.png"]
                                                      style:UIBarButtonItemStylePlain
                                                     target:self
                                                     action:@selector(startChat)];

self.navigationItem.rightBarButtonItem=_btn2;
self.navigationItem.rightBarButtonItem.tintColor = [Utility colorWithHexValue:CyanBlue];

我遇到的问题是,只要聊天中有一些我没有看过的新消息,就应该有一些类型的徽章或聊天按钮上的自定义标签,以表明你有多少新消息.

我该怎么做呢?

2 个回答
  • 对于Swift 3.0:

    结果:

    在此输入图像描述

    码:

    override func viewDidLoad() {
      super.viewDidLoad()
    
      // badge label
      let label = UILabel(frame: CGRect(x: 10, y: -10, width: 20, height: 20))
      label.layer.borderColor = UIColor.clear.cgColor
      label.layer.borderWidth = 2
      label.layer.cornerRadius = label.bounds.size.height / 2
      label.textAlignment = .center
      label.layer.masksToBounds = true
      label.font = UIFont(name: "SanFranciscoText-Light", size: 13)
      label.textColor = .white
      label.backgroundColor = .red
      label.text = "80"
    
      // button
      let rightButton = UIButton(frame: CGRect(x: 0, y: 0, width: 18, height: 16))
      rightButton.setBackgroundImage(UIImage(named: "inbox"), for: .normal)
      rightButton.addTarget(self, action: #selector(rightButtonTouched), for: .touchUpInside)
      rightButton.addSubview(label)
    
      // Bar button item
      let rightBarButtomItem = UIBarButtonItem(customView: rightButton)
    
      navigationItem.rightBarButtonItem = rightBarButtomItem
    }
    
    func rightButtonTouched() {
      print("right button touched")
    }
    

    2023-01-09 16:19 回答
  • 在iOS 8中 - 我可以通过更改badgeValue来实现

                self.messageButton.badgeValue = @"5";
    

    消息按钮是UIBarButton

    你必须将这两个文件包含在你的xcode UIBarButtonItem + Badge.h中.UIBarButtonItem + Badge.m

    可以在这里找到

    Github链接到文件

    2023-01-09 16:19 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有