实现原理:

其实是自定义一个view,将view添加到UITabBar上面,也可以是一个按钮,设置背景图片,和label。
废话少说直接上代码
搞一个UITabBar的分类

#import <UIKit/UIKit.h>

@interface UITabBar (badge)

- (void)showBadgeOnItemIndex:(int)index;
- (void)hideBadgeOnItemIndex:(int)index; @end
#import "UITabBar+badge.h"

#define TabbarItemNums 5.0

@implementation UITabBar (badge)

// 显示红点
- (void)showBadgeOnItemIndex:(int)index { [self removeBadgeOnItemIndex:index];
// 新建小红点
UIView *bview = [[UIView alloc]init];
bview.tag = 888 + index;
bview.layer.cornerRadius = ;
bview.clipsToBounds = YES;
bview.backgroundColor = [UIColor redColor];
CGRect tabFram = self.frame; float percentX = (index+0.6) / TabbarItemNums;
CGFloat x = ceilf(percentX * tabFram.size.width);
CGFloat y = ceilf(0.1 * tabFram.size.height);
bview.frame = CGRectMake(x, y, , );
[self addSubview:bview];
[self bringSubviewToFront:bview];
} // 隐藏红点
- (void)hideBadgeOnItemIndex:(int)index { [self removeBadgeOnItemIndex:index];
}
// 移除控件
- (void)removeBadgeOnItemIndex:(int)index { for (UIView *subView in self.subviews) {
if (subView.tag == 888 + index) {
[subView removeFromSuperview];
}
}
}
@end

最后在子控制器调用就可以啦

#import "UITabBar+badge.h"

 [self.tabBarController.tabBar showBadgeOnItemIndex:];

swift版带消息个数

import UIKit

extension UITabBar {

    func showBadgeOnItem(index:Int, count:Int) {

        removeBadgeOnItem(index: index)
let bview = UIView.init()
bview.tag = +index
bview.layer.cornerRadius =
bview.clipsToBounds = true
bview.backgroundColor = UIColor.red
let tabFrame = self.frame let percentX = (Float(index)+0.6) / 5.0(tabBar的总个数)
let x = CGFloat(ceilf(percentX*Float(tabFrame.width)))
let y = CGFloat(ceilf(0.1*Float(tabFrame.height)))
bview.frame = CGRect(x: x, y: y, width: , height: ) let cLabel = UILabel.init()
cLabel.text = "\(count)"
cLabel.frame = CGRect(x: , y: , width: , height: )
cLabel.font = UIFont.systemFont(ofSize: )
cLabel.textColor = UIColor.white
cLabel.textAlignment = .center
bview.addSubview(cLabel) addSubview(bview)
bringSubview(toFront: bview)
}
// 隐藏红点
func hideBadgeOnItem(index:Int) { removeBadgeOnItem(index: index)
}
// 移除控件
func removeBadgeOnItem(index:Int) { for subView:UIView in subviews {
if subView.tag == +index {
subView.removeFromSuperview()
}
}
}
}

iOS TabBarItem设置红点(未读消息)的更多相关文章

  1. iOS 未读消息角标 仿QQ拖拽 简单灵活 支持xib(源码)

    一.效果 二.简单用法 超级简单,2行代码集成:xib可0代码集成,只需拖一个view关联LFBadge类即可 //一般view上加角标 _badge1 = [[LFBadge alloc] init ...

  2. [iOS微博项目 - 3.6] - 获取未读消息

    github: https://github.com/hellovoidworld/HVWWeibo   A.获取登陆用户未读消息 1.需求 获取所有未读消息,包括新微博.私信.@.转发.关注等 把未 ...

  3. Android BGABadgeView:新消息/未接来电/未读消息/新通知圆球红点提示(1)

     Android BGABadgeView:新消息/未接来电/未读消息/新通知圆球红点提示(1) 现在很多的APP会有新消息/未接来电/未读消息/新通知圆球红点提示,典型的以微信.QQ新消息提示为 ...

  4. Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒

    http://www.51itong.net/android-badgenumber-9789.html Android系统 小米/三星/索尼 应用启动图标未读消息数(BadgeNumber)动态提醒 ...

  5. wing带你玩转自定义view系列(2) 简单模仿qq未读消息去除效果

    上一篇介绍了贝塞尔曲线的简单应用 仿360内存清理效果 这一篇带来一个  两条贝塞尔曲线的应用 : 仿qq未读消息去除效果. 转载请注明出处:http://blog.csdn.net/wingicho ...

  6. 未读消息(小红点),前端与 RabbitMQ实时消息推送实践,贼简单~

    前几天粉丝群里有个小伙伴问过:web 页面的未读消息(小红点)怎么实现比较简单,刚好本周手头有类似的开发任务,索性就整理出来供小伙伴们参考,没准哪天就能用得上呢. 之前在 <springboot ...

  7. 桌面图标未读消息(小米,sony,三星手机)

    新消息来了,在桌面的Laucher图标上显示新消息数 /** * 应用桌面图标未读消息显示工具类 * 只支持 小米,三星和索尼 */ public class BadgeUtil { final st ...

  8. 【Python学习笔记】-APP图标显示未读消息数目

    以小米手机系统为例,当安装的某个APP有未读消息时,就会在该APP图标的右上角显示未读消息的数目.本文主要解说怎样用Python语言实现图标显示未读消息的数目.首先,还是要用到Python中PIL库, ...

  9. Android 高仿QQ滑动弹出菜单标记已读、未读消息

    在上一篇博客<Android 高仿微信(QQ)滑动弹出编辑.删除菜单效果,增加下拉刷新功能>里,已经带着大家学习如何使用SwipeMenuListView这一开源库实现滑动列表弹出菜单,接 ...

随机推荐

  1. 养兔子Fibo函数优化

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. TF-IDF与余弦相似性的应用:找出相似文章

    "找出相似文章"的一种算法: 利用TF-IDF算法,找出两篇文章的关键词. 每篇文章若干个关键词的相对词频. 生成两篇文章各自的词频向量. 计算两个向量的余弦相似度,值越大就表示越 ...

  3. mysql索引小记

    Mysql索引分为以下几类:FULLTEXT, HASH,BTREE,RTREE. FULLTEXT:全文搜索索引 主要是解决'ad%'这样的查询效率低的问题,只能是MyISAM和InnoDB引擎上使 ...

  4. 关于asp.net MVC3 ----@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction

    1.带有Render的方法返回值是void,在方法内部进行输出:不带的返回值类型为MvcHtmlString,所以只能这样使用:@Html.Partial 对应 @{Html.RenderPartia ...

  5. .NET中怎么有效的使用Cache

    Cache 即高速缓存 ,我想非常多人对他的第一印象一定像我相同,感觉他一定能提高系统得性能和运行速度.的确.Net推出cache的初衷确实是这样的.那么cache是怎么提高系统性能和运行速度呢?是不 ...

  6. F5 IIS Log获取客户端源IP

    1.配置F5启用X-Forwarded-For方法: 1:Local Traffic-Profiles-Http-改"Insert XForwarded For"为Enable 2 ...

  7. MySQL 数据库 -- 数据操作

    数据的增删改 一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过 ...

  8. 沉淀,再出发:docker的原理浅析

    沉淀,再出发:docker的原理浅析 一.前言 在我们使用docker的时候,很多情况下我们对于一些概念的理解是停留在名称和用法的地步,如果更进一步理解了docker的本质,我们的技术一定会有质的进步 ...

  9. 删除 maven仓库,更新失败的jar包命令

    set REPOSITORY_PATH=D:\maven_cpbsrem ص‎شعثرث÷...for /f "delims=" %%i in ('dir /b /s " ...

  10. MapReduce Design Patterns(chapter 3 (part 1))(五)

    Chapter 3. Filtering Patterns 本章的模式有一个共同点:不会改变原来的记录.这种模式是找到一个数据的子集,或者更小,例如取前十条,或者很大,例如结果去重.这种过滤器模式跟前 ...