某项目 需要在UITabbar 上显示小红点,在此搜罗了三个方法。
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文件
- #import <UIKit/UIKit.h>
- @interface UITabBar (badge)
- - (void)showBadgeOnItemIndex:(int)index; //显示小红点
- - (void)hideBadgeOnItemIndex:(int)index; //隐藏小红点
- @end
.m文件
- #import "UITabBar+badge.h"
- #define TabbarItemNums 4.0 //tabbar的数量 如果是5个设置为5.0
- @implementation UITabBar (badge)
- //显示小红点
- - (void)showBadgeOnItemIndex:(int)index{
- //移除之前的小红点
- [self removeBadgeOnItemIndex:index];
- //新建小红点
- UIView *badgeView = [[UIView alloc]init];
- badgeView.tag = 888 + index;
- badgeView.layer.cornerRadius = 5;//圆形
- badgeView.backgroundColor = [UIColor redColor];//颜色:红色
- CGRect tabFrame = self.frame;
- //确定小红点的位置
- float percentX = (index +0.6) / TabbarItemNums;
- CGFloat x = ceilf(percentX * tabFrame.size.width);
- CGFloat y = ceilf(0.1 * tabFrame.size.height);
- badgeView.frame = CGRectMake(x, y, 10, 10);//圆形大小为10
- [self addSubview:badgeView];
- }
- //隐藏小红点
- - (void)hideBadgeOnItemIndex:(int)index{
- //移除小红点
- [self removeBadgeOnItemIndex:index];
- }
- //移除小红点
- - (void)removeBadgeOnItemIndex:(int)index{
- //按照tag值进行移除
- for (UIView *subView in self.subviews) {
- if (subView.tag == 888+index) {
- [subView removeFromSuperview];
- }
- }
- }
- @end
第三步,引入到需要使用的类中。
- #import "UITabBar+badge.h"
引用代码如下:
- //显示
- [self.tabBarController.tabBar showBadgeOnItemIndex:2];
- //隐藏
- [self.tabBarController.tabBar hideBadgeOnItemIndex:2]
某项目 需要在UITabbar 上显示小红点,在此搜罗了三个方法。的更多相关文章
- Windows7下移植Qt4.8.4项目到QT5.2上时遇到的一些问题(包括三篇参考文章)
文章来源:http://blog.csdn.net/ccf19881030/article/details/18220447 问题一:错误:C1083: 无法打开包括文件:“QApplication” ...
- 解决swfupload上传控件文件名中文乱码问题 三种方法 flash及最新版本11.8.800.168
目前比较流行的是使用SWFUpload控件,这个控件的详细介绍可以参见官网http://demo.swfupload.org/v220/index.htm 在使用这个控件批量上传文件时发现中文文件名都 ...
- Git安装配置和提交本地代码至Github,修改GitHub上显示的项目语言
1. 下载安装git Windows版Git下载地址: https://gitforwindows.org/ 安装没有特别要求可以一路Next即可,安装完成后可以看到: 2. 创建本地代码仓库 打开G ...
- Maven项目上有小红叉咋办
Maven项目上有小红叉咋办 创建maven项目之后,war工程如果目录不全的话会出现错误.这种情况就是把目录补全就可以了. 这种情况版本问题,点击那个最新版本的,会自动给加一段代码.(如果没有就自己 ...
- 关于Unity程序在IOS和Android上显示内嵌网页的方式
近期因为有须要在Unity程序执行在ios或android手机上显示内嵌网页.所以遍从网上搜集了一下相关的资料.整理例如以下: UnityWebCore 从搜索中先看到了这个.下载下来了以后发现这个的 ...
- Visual Studio 2008项目中WinForm窗口图标显示为类图标,仅仅能打开代码而无法打开视图问题解决
背景: 今天打开一个Winform项目的时候.图标显示为类文件的样子而不是窗口的样子,在代码中右键也没有View Designer选项.双击图标打开的是代码而非窗口设计界面,百度后也没 ...
- 改变Tomcat在地址栏上显示的小猫图标
部署在Tomcat上的项目通常在地址栏会显示一个小猫的图标,那么如何改变这个图标呢? 第一步.制作自己显示的图标 这里使用的是在线制作的方式,推荐一个在线制作的网站---比特虫:http://www. ...
- 使用MyEclipse开发Java EE应用:EJB项目开发初探(上)
你开学,我放价!MyEclipse线上狂欢继续!火热开启中>> [MyEclipse最新版下载] 一.MyEclipse EJB开发工具 Enterprise Java Beans (EJ ...
- 项目托管到Github上
一.注册github账号 首先需要注册一个github账号,注册地址:https://github.com 接着会来到这 然后会收到一封github发的邮件,进入邮箱验证 二.创建个人的githu ...
随机推荐
- AIDL与stub
Stub翻译成中文是存根的意思,注意Stub对象是在被调用端进程,也就是服务端进程,至此,服务端aidl服务端得编码完成了. stub是为了方便client,service交互而生成出来的代码.A ...
- 【HDOJ】4373 Mysterious For
1. 题目描述有两种不同类型的循环,并给出一个由1.2组成的序列,表示嵌套的循环类型.问这样组着的循环一共需要多少次循环?并将结果模364875103. 2.基本思路显然,每当遇到一个类型1的序列,即 ...
- hdu4614Vases and Flowers
http://acm.hdu.edu.cn/showproblem.php?pid=4614 线段树的各种操作 写的有点乱 求插入位置是以区间K值的方法求出的 向下更新 #include <io ...
- bzoj1003: [ZJOI2006]物流运输
dp+最短路.暴力枚举就可以了.O(n3logn).样例中m=n然后测样例过了.然后 54行习惯性的dis[n]然后就WA了!!!. #include<cstdio> #include&l ...
- SDOI2012Longge的问题
2705: [SDOI2012]Longge的问题 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 930 Solved: 601[Submit][St ...
- Springmvc构造RESTful详细讲解
Rest介绍 /blog/1 HTTP GET => 得到id = 1的blog/blog/1 HTTP DELETE => 删除 id = 1的blog/blog/1 HTTP PUT ...
- LeetCode Balanced Binary Tree (判断平衡树)
题意:如题,平衡树是指任意一个节点(除了叶子),其左子树的高度与右子树的高度相差不超过1. 思路:递归解决,但是提供的函数不满足递归的要求啊,我们至少得知道高度,又得返回真假,所以另开个函数解决. / ...
- POJ 1067 取石子游戏
题意:有两堆个数分别为a和b的石子,两个人轮流取石子,一次可以取一堆中任意个数的石子,或者在两堆中取相同个数的石子,最先没有石子可以取的人输,你先取,赢为1输为0. 解法:威佐夫博弈.看完题先找规律, ...
- SSL 通信原理及Tomcat SSL 配置
SSL 通信原理及Tomcat SSL 双向配置 目录1 参考资料 .................................................................. ...
- sqlserver 2008 R2 分区表测试
有一张表期中有100多w条数据 程序执行起来比较慢,想用分区表的办法,使查询变快一些. 方案如下 --查看分区信息SELECT * FROM sys.partition_range_values -- ...