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

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

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

消息红点.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 <UIKit/UIKit.h>

@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,取消就行啦,如下图:

clip to bounds

最终效果图

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,374评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,293评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,204评论 4 61
  • 达尔文,摩尔根的爱情婚姻可以说是悲惨的。达尔文与表妹爱玛结婚,生下了六个孩子,本应是幸福的,但现实就是这么残忍,六...
    沉默功夫阅读 5,864评论 0 0
  • -01- 在外上学,已有半年未归。终于放假,远远地就看到外婆在楼下守望。 外婆已近九十高龄,只见她手哆嗦着握着和我...
    诺亚方桌阅读 3,772评论 34 18