文档章节

在任意UIView上显示Badge

窗外雨
 窗外雨
发布于 2014/12/05 21:03
字数 298
阅读 29
收藏 0

UITabBar的选项卡上有时会需要显示一个红圈,红圈里是数字或者其他字符,术语叫徽章,比如微信主页面主选项卡上会用这种方式提示新消息条数,但也想在其他地方显示这个徽章怎么办呢?比如微信中每个联系人的头像右上角显示该联系人的新消息条数。当然有第三方的源码,但效果还是不如系统提供的好。

系统这个徽章的类叫UITabBarButtonBadge,但是该类是个私有类,开发人员不能用。先贴源码

[plain] view plaincopy

  1. + (UIView *)addBadgeViewTo:(UIView *)superview withBadgeValue:(NSString *)strBadgeValue  

  2. {  

  3.     UITabBar *tabBar = [[UITabBar alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];  

  4.     UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:@"" image:nil tag:0];  

  5.     item.badgeValue = strBadgeValue;  

  6.     NSArray *array = [[NSArray alloc] initWithObjects:item, nil];  

  7.     tabBar.items = array;  

  8.     [item release];  

  9.     [array release];  

  10.     //寻找  

  11.     for (UIView *viewTab in tabBar.subviews) {  

  12.         for (UIView *subview in viewTab.subviews) {  

  13.             NSString *strClassName = [NSString stringWithUTF8String:object_getClassName(subview)];  

  14.             if ([strClassName compare:@"UITabBarButtonBadge"] == NSOrderedSame) {  

  15.                 //从原视图上移除  

  16.                 [subview removeFromSuperview];  

  17.                 //  

  18.                 [superview addSubview:subview];  

  19.                 [tabBar release];  

  20.                 return subview;  

  21.             }  

  22.         }  

  23.     }  

  24.     [tabBar release];  

  25.     return nil;  

  26. }  


输入参数为想要显示徽章的UIView和徽章上要显示的字符串,返回徽章的UIView以调整徽章的位置。


本文转载自:http://blog.csdn.net/yjh4866/article/details/7174243

窗外雨
粉丝 0
博文 5
码字总数 189
作品 0
海淀
私信 提问
橡皮筋效果--LPBadgeView

LPBadgeView是一款仿QQ新消息数的小红圈徽标Badge,橡皮筋效果的软件。 1.便利初始化 ///默认color(主题颜色)为红色+ (LPBadgeView )badgeWithColor:(UIColor )color; 2.直接使用xib/storybo...

iOS刘呵呵
2016/03/08
345
0
iOS 各种demo链接汇总~其它UI

//联系人:石虎QQ:1224614774昵称:嗡嘛呢叭咪哄 一、其他UI AwesomeMenu-最多人用的Path菜单。 DCPathButton- Path,4.0的弹出菜单,呼出或者关闭菜单时,多个小图标会分别按照逆时针和顺时针...

石虎132
2017/11/24
0
0
CALayer与UIView的关系

UIView是iOS系统中界面元素的基础,所有的界面元素都是继承自它。它本身完全是由CoreAnimation来实现的。它真正的绘图部分,是由一个CALayer类来管理。UIView本身更像是一个CALayer的管理器,...

Megan_zhou
2014/04/30
129
0
别再用 View 了,请使用 Drawable 来绘制 Badge!

对于不可交互的 Badge(各种小红点),最好的实现方式是使用自由度高的 Drawable,你可以把它绘制在 ImageView、TextView 设置可以设置为任意 View 的 Backgroud 上。 项目地址:https://git...

nekocode
2017/04/20
326
2
脉冲星动画通用方案--Pulsar Swift

Pulsar 是 Appley Maps 显示脉冲星动画效果的通用解决方案。 Pulsar 基于 CALayer, 兼容任意的 UI 空间和任意的 UIView。 Pulsar 包括基于 CALayer 简单的类,提供一站式服务的 builder 模式...

叶秀兰
2015/04/01
215
0

没有更多内容

加载失败,请刷新页面

加载更多

哪些情况下适合使用云服务器?

我们一直在说云服务器价格适中,具备弹性扩展机制,适合部署中小规模的网站或应用。那么云服务器到底适用于哪些情况呢?如果您需要经常原始计算能力,那么使用独立服务器就能满足需求,因为他...

云漫网络Ruan
今天
9
0
Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
今天
17
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
11
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
9
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部