• 青海“天然林管护+生态扶贫” 5517万亩天然林得到保护 2019-04-18
  • 生活-热门标签-华商生活 2019-04-18
  • 文化山西:风华长城岁月歌 2019-04-16
  • 中华龙舟大赛福州站收官 黑马异军突起摘大满贯 2019-04-16
  • 台湾布袋戏大师陈锡煌的两岸缘 2019-04-13
  • 老师:讲课再累都不怕 就怕各级搞检查讲课再累都不怕-教育时讯 2019-04-13
  • 行业变革中的房产经纪公司加盟暗战 ——凤凰网房产深圳 2019-03-31
  • 图解:习近平出席博鳌亚洲论坛2018年年会前瞻 2019-03-19
  • 外贸创新举措 让开放惠及世界 2019-03-15
  • 记者带你逛CES:体验未来科技 2019-03-14
  • 我的中国医改建议,彻底解决看病难看病贵 2019-03-14
  • 海空联合演练相关新闻 2019-01-05
  • 登录 立即注册
    金钱:

    广州快乐十分开奖记录

    广东快乐十分手机网投:一个小红点解决方案

    [复制链接]
    来自: 王芋头先森S 分类: iOS精品源码 上传时间: 2016-5-26 10:22:04
    Tag:GJRedDot , 提醒红点 , badge

    项目介绍:

    github.com/GJGroup/GJRedDot


    GJRedDot

    这是一个小红点的解决方案,你可以方便的使用它去管理你的小红点提示。感谢支持。



    使用场景
    我们的项目中,有很多小红点联动的需求,例如上一级页面的小红点受下一级页面小红点的影响,比如微信的“发现——朋友圈”,当朋友圈有新消息时,发现tab页面朋友圈cell中的icon上会有一个小红点,这时发现tab的icon上也有一个小红点,但是当我们点击“发现tab“的时候,小红点并不消失,而是点击朋友圈cell后,cell上和“发现tab”上的小红点同时消失,类似的需求很多APP种都可以发现。

    最开始我们使用消息中心来实现,后来发现,当小红点级别变多后,代码量几何增长且分散各处,十分混乱,为了解决这个问题,我们将它进行封装。首先用key将小红点的进行关联并注册,然后只需在显示小红点的页面设置刷新block,并在任何需要刷新他的地方调用改变显示状态的方法,只需这三步即可完成。


    开始
    将GJRedDot文件夹拷贝到工程中,在使用的地方导入头文件

    #import "GJRedDot.h"


    注册
    首先,需要在app launch中,以小红点对应的key,通过NSArray及NSDictionary关联起来,并进行注册(见Demo)

    [Objective-C] 查看源文件 复制代码
     广州快乐十分开奖记录 www.2hyn.net @implementation AppDelegate
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        [GJRedDot registWithProfile:[GJRedDotRegister registProfiles]];
        return YES;
    }




    这个例子在Demo中:GJTabBar2是第二个tabbar的小红点Key,它与这个tab的rootVC中的icon(GJGroupKey)进行关联,GJGroupKey又与下一级页面的3个按钮(GJSunnyxxKey,GJUncleBirdKey,GJSardKey)进行关联。最后所实现的功能就是,GJSunnyxxKey,GJUncleBirdKey,GJSardKey三个按钮中有一个按钮有小红点,则GJGroupKey,GJTabBar2上也会显示小红点,如果三个按钮中小红点都消失,则GJGroupKey,GJTabBar2上的小红点才会消失。
    看着不太明白是吧?下面用伪代码解释一下:
    [Objective-C] 查看源文件 复制代码
    - (BOOL)isShowGJTabBar2 {
        if (GJGroupKey.isShow) return YES;
        return NO
    }
    
    - (BOOL)isShowGJGroupKey {
        if(!GJSunnyxxKey.isShow && !GJUncleBirdKey.isShow && !GJSardKey.isShow) return NO;
        return YES;
    }



    是不是清晰点了?
    注意:默认注册方法下,是使用GJRedDotModelUserDefault,将使用Key缓存到NSUserDefault中,所以请保证小红点的Key与程序中其他地方的Key区分开,以防出现问题。
    Demo注册代码:
    [Objective-C] 查看源文件 复制代码
    NSString *const GJTabBar2 = @"GJTabBar2";
    NSString *const GJGroupKey = @"GJAllGays";
    NSString *const GJSunnyxxKey = @"GJSunnyxxIsGay";
    NSString *const GJUncleBirdKey = @"GJUncleBird";
    NSString *const GJSardKey = @"GJSarkIsGay";
    
    @implementation GJRedDotRegister
    + (NSArray *)registProfiles {
        return @[
                 @{GJTabBar2:@{GJGroupKey:@[
                                       GJSunnyxxKey,
                                       GJUncleBirdKey,
                                       GJSardKey
                                       ]
                               }
                   }
                 ];
    }



    使用
    在需要使用小红点的地方调用如下方法

    [Objective-C] 查看源文件 复制代码
        //将小红点管理绑定到持有小红点的对象上(handler),当它release的时候,也自动release小红点的管理
        //block是小红点刷新的动作,当有其他与当前key相关联的小红点状态发生变化或自身发生变化时,并影响到当前小红点状态,则进行刷新动作
        //这里要使用weakSelf避免循环引用
        __weak typeof(self) weakSelf = self;
        [self setRedDotKey:GJGroupKey refreshBlock:^(BOOL show) {
            weakSelf.gjGroupButton.showRedDot = show;
        } handler:self];




    在需要改变小红点状态的地方调用此方法:
    [Objective-C] 查看源文件 复制代码
     //改变小红点状态,他会自动在上一个方法中刷新小红点,以及刷新想关联的小红点状态
        [self resetRedDotState:NO forKey:GJGroupKey];



    通过系统原生UITabBarItem添加小红点功能
    [Objective-C] 查看源文件 复制代码
    //VC中的方法
    - (void)methodVC {
    //self就是VC
        self.tabBarItem.isShowRedDot = YES;
    }
    
    //通过tabBar的items获取item来设置
    - (void)methodTabBar {
        self.tabBarController.tabBar.items[1].isShowRedDot = YES;
    }
    
    //设置偏移量
    - (void)setOffset {
        self.taBarItem.redDotOffset = CGPointMake(5, 10);
    }
    
    //设置小红点半径
    - (void)setRadius {
        self.taBarItem.redDotRadius = 10;
    }
    
    //设置小红点颜色
    - (void)setColor {
        self.taBarItem.redDotColor = [UIColor redColor];
    }
    
    //使用自定义view显示在小红点位置
    - (void)setCustomView {
        self.taBarItem.customView = ....;
    }


    DEMO下载:


    相关源码推荐:

    我来说两句
    *滑动验证:
    所有评论(91)
    我就叫土豆 2016-5-30 15:52:55
    精华内容,楼主V5!
    回复
    WangJXin 2016-5-30 15:59:06
    虽不明,但觉厉!
    回复
    pjh111 2016-5-31 11:10:32
    楼主威武啊,Code4App有你更给力!
    回复
    nygk0340 2016-5-31 14:18:08
    回复
    xiaoyadong 2016-5-31 19:56:32
    楼主用心了,内容非常精彩。
    回复
    jyh1516 2016-6-1 14:27:37
    很给力,Code4App有你更精彩!
    回复
    夜雨星空 2016-6-2 00:27:22
    强烈支持楼主ing……
    回复
    vump0001 2016-6-2 09:51:46
    淡定,淡定,淡定……
    回复
    shiwensong 2016-6-3 08:40:47
    正需要啊,感谢楼主无私分享!
    回复
    提取码:  下载次数:108 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
    7039 0 108
    联系我们
    首页/微信公众账号投稿

    帖子代码编辑/版权问题

    QQ:435399051,742864542

    如何获得代码达人称号?

    代码贡献英雄榜
    用户名 下载数
    通过邮件订阅最新 Code4App 信息
    上一条 /4 下一条
    联系我们
    关闭
    合作电话:
    13802416937
    Email:
    [email protected]
    商务市场合作/投稿
    问题反馈及帮助
    联系我们

    广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|Github|申请友链|手机版|广州快乐十分开奖记录 ( 粤ICP备15117877号-1 )

    快速回复 广州快乐十分开奖记录 返回列表
  • 青海“天然林管护+生态扶贫” 5517万亩天然林得到保护 2019-04-18
  • 生活-热门标签-华商生活 2019-04-18
  • 文化山西:风华长城岁月歌 2019-04-16
  • 中华龙舟大赛福州站收官 黑马异军突起摘大满贯 2019-04-16
  • 台湾布袋戏大师陈锡煌的两岸缘 2019-04-13
  • 老师:讲课再累都不怕 就怕各级搞检查讲课再累都不怕-教育时讯 2019-04-13
  • 行业变革中的房产经纪公司加盟暗战 ——凤凰网房产深圳 2019-03-31
  • 图解:习近平出席博鳌亚洲论坛2018年年会前瞻 2019-03-19
  • 外贸创新举措 让开放惠及世界 2019-03-15
  • 记者带你逛CES:体验未来科技 2019-03-14
  • 我的中国医改建议,彻底解决看病难看病贵 2019-03-14
  • 海空联合演练相关新闻 2019-01-05
  • zho中国竞彩网 福彩中奖表 单场总进球6串22是什么意思 求购3d彩票走势图 四川时时彩11选5开奖结果走势图 体彩7星彩18068期开奖 上海时时彩下载手机版 山东十一选五走势图 七星彩走势图 中国竞彩足球比分直播lm0 老时时彩个位计划 澳洲幸运5开奖直播 中国彩票网 排列五专家预测 北京赛车pk10技巧 竞彩足球比分直播网