某项目 需要在UITabbar 上显示小红点,在此搜罗了三个方法。

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

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

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

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文件

[objc] view plaincopy

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

.m文件

[objc] view plaincopy

  1. #import "UITabBar+badge.h"
  2. #define TabbarItemNums 4.0    //tabbar的数量 如果是5个设置为5.0
  3. @implementation UITabBar (badge)

[objc] view plaincopy

  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. }

[objc] view plaincopy

  1. //隐藏小红点
  2. - (void)hideBadgeOnItemIndex:(int)index{
  3. //移除小红点
  4. [self removeBadgeOnItemIndex:index];
  5. }

[objc] view plaincopy

  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

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

[objc] view plaincopy

  1. #import "UITabBar+badge.h"

引用代码如下:

[objc] view plaincopy

    1. //显示
    2. [self.tabBarController.tabBar showBadgeOnItemIndex:2];
    3. //隐藏
    4. [self.tabBarController.tabBar hideBadgeOnItemIndex:2]
时间: 2024-11-05 22:48:04

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

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

文章来源:http://blog.csdn.net/ccf19881030/article/details/18220447 问题一:错误:C1083: 无法打开包括文件:“QApplication”: No such file or directory 出现原因:Qt5里不再用QtGui模块,而是使用QtWidgets模块. 解决方法:在*.pro里加上greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 问题二:Qt 5.2 使用原来的QT4.8.4

安卓建立项目后,在项目上出现小红叉(已解决)!

近来,有幸了解了谷歌的一款面向世界的新产品--无人驾驶汽车,尽管它还没有面世,但就目前来看,它所带来的影响也是巨大的,现在,我就来谈谈我对这个无人驾驶汽车的未来大一些想法. 无人驾驶汽车,顾名思义,无人驾驶的汽车,即自动化,电子计算机,传感器,互联网等信息技术所主导的驾驶系统之下所产生的汽车类别. 在这里,我不讨论这个汽车的技术分析,我并不精通于这方面,我想谈谈的,是他的未来趋势. 我曾经见过一些文章,或者一些学者曾经说过,无人驾驶汽车的到来将使得汽车行业空前的发达,因为它可是使得那些不会开车的

Maven项目上有小红叉咋办

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

用GitBash将eclipse的一个Java项目部署到Github上

花了一下午功夫总算是把这个拼图游戏小项目部署到Github上了,用GitBash命令出现的问题很多,原因当然是自己没玩熟,一些说明都是纯英文的,诶. http://blog.csdn.net/pony_maggie/article/details/42201435,这个博客讲的就是针对这个操作的,至于其他clone什么的,暂时用不上.下面是我的依次命令. 先建一个空仓库,默认都None,别慌初始化一个README.md,等上传上去了再add一个. init会初始化一个.git隐藏文件,将这个文件

在屏幕上显示日志的Android类库

Galgo是Android日志类库,用于在屏幕上显示应用的日志信息.这对于测试人员和开发人员非常有用,可以根据屏幕上的日志文件了解应用出现BUG时发生的事情. 可以定义屏幕上显示日志的背景颜色.文本颜色.文本大小和日志显示的行数. https://github.com/inaka/galgo public class ExampleActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceS

项目托管到Github上

一.注册github账号   首先需要注册一个github账号,注册地址:https://github.com 接着会来到这 然后会收到一封github发的邮件,进入邮箱验证 二.创建个人的github仓库  验证成功是这样的,然后点击创建仓库 也可以来到个人中心里创建仓库 创建完成好之后是这样子的.创建仓库的时候最好别用中文,不然你的仓库名就会显示 -  这样一条小横线. 三. 配置SSH keys 终端里输入显示隐藏文件:defaults write com.apple.finder App

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

近期因为有须要在Unity程序执行在ios或android手机上显示内嵌网页.所以遍从网上搜集了一下相关的资料.整理例如以下: UnityWebCore 从搜索中先看到了这个.下载下来了以后发现这个的原理好像是通过调用浏览器内核.然后将网页渲染到mesh的方式完毕的. 但遗憾的是仅仅支持windows桌面版本号.但还是发出来大家假设有须要能够下载  下载地址: http://pan.baidu.com/s/1nt3FVkd unity-webview 这个是在github上找到的. 是一个kei

如何安装的apk不在桌面上显示,并在自己的代码中启动启动

在自己的项目中集成另一个apk,设置这个apk不在桌面上显示,并在自己的项目中能够启动这个apk 首先用apk tool反编译需要集成的apk,删除AndroidManifest.xml中的luncher启动标志,然后在使用apk tool进行打包,生成新的apk [1].[代码] [Java]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 //方法一 Intent intent =

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

你开学,我放价!MyEclipse线上狂欢继续!火热开启中>> [MyEclipse最新版下载] 一.MyEclipse EJB开发工具 Enterprise Java Beans (EJB)拥有JEE / Java EE 5标准用于实现Java企业业务功能和数据库资源接口.MyEclipse EJB3工具支持Java EE 5的基于简化注释的POJO编程模型.这些工具使您能够在数分钟内开发和部署一个 EJB3 bean.MyEclipse也支持传统的EJB2开发,使用集成的XDoclet注释