最简单的badgeValue设置(文字都行)

一、最近总结自己写的项目,消息数提醒除了系统的UITabBarItem的badgeValue,其他地方想要用到就必须自定义,而自定义必须至少三个步骤
  • 创建实例对象(或者使用类方法)
  • 设置相关属性值
  • 添加到指定位置

二、我希望只需要一句代码就能实现,就好像系统提供的badgeValue,我只需要设置个值,就能显示出来,而且我需要在任意的视图上都能显示!不需要管内部怎么实现,这样使用起来就十分爽,先上图吧:
最简单的badgeValue设置(文字都行)_第1张图片
可以显示文字

最简单的badgeValue设置(文字都行)_第2张图片
消息红点.gif

三、那么怎么实现了,相信大家都能想到了,对,就是UIView分类,利用runtime添加属性,就是这么简单、方便、粗暴!

四、API设计,就一个属性,因为考虑到是分类,不方便管理,默认消息红点就是在右上角
/*
 * author 孔凡列
 *
 * gitHub https://github.com/gitkong
 * cocoaChina http://code.cocoachina.com/user/
 *  http://www.jianshu.com/users/fe5700cfb223/latest_articles
 * QQ 279761135
 * 喜欢就给个like 和 star 喔~
 */

#import 

@interface UIView (BadgeValue)
/**
 *  @author Clarence
 *
 *  设置消息数,设置小于或等于0 、@"" 、nil 就隐藏
 */
@property (nonatomic,copy)NSString *fl_badgeValue;

@end

总结
  • 用法极其简单,用点语法即可,Demo里面有

  • 分类不方便管理,因此暂时只提供一个默认的,红点位置在控件的右上角

  • 隐藏badgeValue 只需要设置其字符串的值是小于或等于0、空字符串、nil都可以

  • 设置断言,默认输入的字符串值都是数字,不能是其他,不需要这功能可以在m文件中注释掉断言

  • 注意:如果是在cell中的控件添加BadgeValue红点,需要在赋值前,保证cell的控件已经布局,可以调用[cell layoutIfNeeded]强制布局 (2016.11.29更新)

  • 相信大家看上面的gif都发现了,UITextField不能正常显示红点,其实就是一个textField属性设置问题,因为我是用SB创建的,默认clip to bounds 是YES,取消就行啦,如下图:

最简单的badgeValue设置(文字都行)_第3张图片
clip to bounds

最简单的badgeValue设置(文字都行)_第4张图片
最终效果图

gitHub地址 最新的修改都在上面,有什么问题可以留言,我会一一回复,欢迎大家关注我,喜欢就给个like & star,多支持支持,随时更新原创干货~

你可能感兴趣的:(最简单的badgeValue设置(文字都行))