美文网首页iOS学习iOS 开发每天分享优质文章iOS开发
最简单的badgeValue设置(文字都行)

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

作者: gitKong | 来源:发表于2016-11-01 14:51 被阅读817次
    一、最近总结自己写的项目,消息数提醒除了系统的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,多支持支持,随时更新原创干货~

    相关文章

      网友评论

        本文标题:最简单的badgeValue设置(文字都行)

        本文链接:https://www.haomeiwen.com/subject/jbemuttx.html