1.使用系统自带的,并且可以在小红点上显示数字。

 [itemOne setBadgeValue:@""]; //显示不带数字的小红点
[itemOne setBadgeValue:@""];//显示小红点 并且带数字

以上的缺点:小红点太大了,伤不起啊!

2.使用图片,创建图片的时候,设置图片的渲染。

 UIImage * normalImage = [[UIImage imageNamed:@"pic_msg_yes_nor"]  imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIImage * selectImage = [[UIImage imageNamed:@"pic_msg_yes_sel"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UITabBarItem *itemOne=[[UITabBarItem alloc]initWithTitle:@"消息" image:normalImage selectedImage:selectImage]; /**设置UIImage的渲染模式:UIImage.renderingMode 着色(Tint Color)是iOS7界面中的一个.设置UIImage的渲染模式:UIImage.renderingMode重大改变,你可以设置一个UIImage在渲染时是否使用当前视图的Tint Color。UIImage新增了一个只读属性:renderingMode,对应的还有一个新增方法:imageWithRenderingMode:,它使用UIImageRenderingMode枚举值来设置图片的renderingMode属性。该枚举中包含下列值: UIImageRenderingModeAutomatic // 根据图片的使用环境和所处的绘图上下文自动调整渲染模式。
UIImageRenderingModeAlwaysOriginal // 始终绘制图片原始状态,不使用Tint Color。
UIImageRenderingModeAlwaysTemplate // 始终根据Tint Color绘制图片,忽略图片的颜色信息。 renderingMode属性的默认值是UIImageRenderingModeAutomatic
*/

缺点:这样就只能显示小红点了,无法显示具体的数字。不过楼主的项目 不需要显示数字,就用了这种。方便简洁。

3.使用catgory,扩展UITabbar

此方法转载自:http://blog.csdn.net/lilinoscar/article/details/47103747

第一步,建一个UITabBar的category类别。

第二步,编写代码。

.h文件

  1. #import <UIKit/UIKit.h>
  2. @interface UITabBar (badge)
  3. - (void)showBadgeOnItemIndex:(int)index;   //显示小红点
  4. - (void)hideBadgeOnItemIndex:(int)index; //隐藏小红点
  5. @end

.m文件

  1. #import "UITabBar+badge.h"
  2. #define TabbarItemNums 4.0    //tabbar的数量 如果是5个设置为5.0
  3. @implementation UITabBar (badge)
  1. //显示小红点
  2. - (void)showBadgeOnItemIndex:(int)index{
  3. //移除之前的小红点
  4. [self removeBadgeOnItemIndex:index];
  5. //新建小红点
  6. UIView *badgeView = [[UIView alloc]init];
  7. badgeView.tag = 888 + index;
  8. badgeView.layer.cornerRadius = 5;//圆形
  9. badgeView.backgroundColor = [UIColor redColor];//颜色:红色
  10. CGRect tabFrame = self.frame;
  11. //确定小红点的位置
  12. float percentX = (index +0.6) / TabbarItemNums;
  13. CGFloat x = ceilf(percentX * tabFrame.size.width);
  14. CGFloat y = ceilf(0.1 * tabFrame.size.height);
  15. badgeView.frame = CGRectMake(x, y, 10, 10);//圆形大小为10
  16. [self addSubview:badgeView];
  17. }
  1. //隐藏小红点
  2. - (void)hideBadgeOnItemIndex:(int)index{
  3. //移除小红点
  4. [self removeBadgeOnItemIndex:index];
  5. }
  1. //移除小红点
  2. - (void)removeBadgeOnItemIndex:(int)index{
  3. //按照tag值进行移除
  4. for (UIView *subView in self.subviews) {
  5. if (subView.tag == 888+index) {
  6. [subView removeFromSuperview];
  7. }
  8. }
  9. }
  10. @end

第三步,引入到需要使用的类中。

  1. #import "UITabBar+badge.h"

引用代码如下:

    1. //显示
    2. [self.tabBarController.tabBar showBadgeOnItemIndex:2];
    3. //隐藏
    4. [self.tabBarController.tabBar hideBadgeOnItemIndex:2]

某项目 需要在UITabbar 上显示小红点,在此搜罗了三个方法。的更多相关文章

  1. Windows7下移植Qt4.8.4项目到QT5.2上时遇到的一些问题(包括三篇参考文章)

    文章来源:http://blog.csdn.net/ccf19881030/article/details/18220447 问题一:错误:C1083: 无法打开包括文件:“QApplication” ...

  2. 解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11.8.800.168

    目前比较流行的是使用SWFUpload控件,这个控件的详细介绍可以参见官网http://demo.swfupload.org/v220/index.htm 在使用这个控件批量上传文件时发现中文文件名都 ...

  3. Git安装配置和提交本地代码至Github,修改GitHub上显示的项目语言

    1. 下载安装git Windows版Git下载地址: https://gitforwindows.org/ 安装没有特别要求可以一路Next即可,安装完成后可以看到: 2. 创建本地代码仓库 打开G ...

  4. Maven项目上有小红叉咋办

    Maven项目上有小红叉咋办 创建maven项目之后,war工程如果目录不全的话会出现错误.这种情况就是把目录补全就可以了. 这种情况版本问题,点击那个最新版本的,会自动给加一段代码.(如果没有就自己 ...

  5. 关于Unity程序在IOS和Android上显示内嵌网页的方式

    近期因为有须要在Unity程序执行在ios或android手机上显示内嵌网页.所以遍从网上搜集了一下相关的资料.整理例如以下: UnityWebCore 从搜索中先看到了这个.下载下来了以后发现这个的 ...

  6. Visual Studio 2008项目中WinForm窗口图标显示为类图标,仅仅能打开代码而无法打开视图问题解决

    背景:         今天打开一个Winform项目的时候.图标显示为类文件的样子而不是窗口的样子,在代码中右键也没有View Designer选项.双击图标打开的是代码而非窗口设计界面,百度后也没 ...

  7. 改变Tomcat在地址栏上显示的小猫图标

    部署在Tomcat上的项目通常在地址栏会显示一个小猫的图标,那么如何改变这个图标呢? 第一步.制作自己显示的图标 这里使用的是在线制作的方式,推荐一个在线制作的网站---比特虫:http://www. ...

  8. 使用MyEclipse开发Java EE应用:EJB项目开发初探(上)

    你开学,我放价!MyEclipse线上狂欢继续!火热开启中>> [MyEclipse最新版下载] 一.MyEclipse EJB开发工具 Enterprise Java Beans (EJ ...

  9. 项目托管到Github上

    一.注册github账号   首先需要注册一个github账号,注册地址:https://github.com 接着会来到这 然后会收到一封github发的邮件,进入邮箱验证 二.创建个人的githu ...

随机推荐

  1. C#.Net 如何动态加载与卸载程序集(.dll或者.exe)2----通过应用程序域AppDomain加载和卸载程序集之后,如何再返回原来的主程序域

    实现目的:动态加载dll,执行完毕之后可以随时卸载掉,并可以替换这些dll,以在运行中更新dll中的类. 其实就是通过应用程序域AppDomain加载和卸载程序集. 在这方面微软有篇文章http:// ...

  2. Win7安装错误提示与解决办法大全

    Windows7安装时有许多提示错误,许多朋友不知道如何解决,那就看看这篇软媒整理的文章吧,或许有些帮助.本文出现的问题同样应用于其他版本的Windows 7,甚至是Vista,收藏一下本文,或者某天 ...

  3. MCC(移动国家码)和 MNC(移动网络码)

    国际移动用户识别码(IMSI) international mobile subscriber identity 国际上为唯一识别一个移动用户所分配的号码.     从技术上讲,IMSI可以彻底解决国 ...

  4. Android开发之在子线程中使用Toast

    在子线程中使用Toast的时候,出现Force close. 错误提示:Can't create handler inside thread that has not called Looper.pr ...

  5. Shell中判断字符串是否为数字的6种方法分享

    #!/bin/bash ## 方法1 a=1234;echo "$a"|[ -n "`sed -n '/^[0-9][0-9]*$/p'`" ] &&a ...

  6. CSS那些事儿-阅读随笔3(清除浮动)

    浮动主要是由浮动(float)属性导致的页面错位现象,清除浮动不仅能解决页面错位的现象,还可以解决子元素浮动导致父元素背景无法自适应子元素高度的问题.在CSS样式中,主要利用clear属性中的both ...

  7. zoj 3351 Bloodsucker(概率 dp)

    题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4530 dp[i]表示现在存在i个吸血鬼要达成目标(全为吸血鬼)天数的数学 ...

  8. poj2752 水题

    又2b了一次…… var s:ansistring; ans,pre:..] of longint; i,k,tot:longint; procedure main; begin pre[]:=;k: ...

  9. POJ 1815 Friendship ★(字典序最小点割集)

    [题意]给出一个无向图,和图中的两个点s,t.求至少去掉几个点后才能使得s和t不连通,输出这样的点集并使其字典序最大. 不错的题,有助于更好的理解最小割和求解最小割的方法~ [思路] 问题模型很简单, ...

  10. 用JS动态创建登录表单,报了个小错误

    后来发现原来是: dvObj.style.border='#Red 1px sold'; 其中的Red多谢了一个‘#’, 但是奇怪的是在chrome和firefox都备有报错,但是在ie中报错了. 各 ...