实用小技巧(三十五)—— UITabBar上业务相关的红点展示和移除逻辑实现(一)

版本记录

版本号 时间
V1.0 2018.09.17

前言

在app中,很多时候都需要熟悉一些小技巧让您事半功倍,提高工作效率,这些小技巧都很小很细。感兴趣的可以看看我写的其他小技巧。
1. 实用小技巧(一):UIScrollView中上下左右滚动方向的判断
2. 实用小技巧(二):屏幕横竖屏的判断和相关逻辑
3.实用小技巧(三):点击手势屏蔽子视图的响应
4.实用小技巧(四):动态的增删标签视图
5.实用小技巧(五):通过相册或者相机更改图标
6.实用小技巧(六):打印ios里所有字体
7. 实用小技巧(七):UITableViewCell自适应行高的计算
8. 实用小技巧(八):数字余额显示的分隔
9.实用小技巧(九):类头条模糊背景的实现
10.实用小技巧(十):晃动手机换后台服务器网络
11.实用小技巧(十一):scrollView及其子类显示的一些异常处理
12.实用小技巧(十二):头像图片缩放以及保存到相册简单功能的实现
13.实用小技巧(十三):一种类酷我音乐盒动画实现
14.实用小技巧(十四):生成跳往applestore指定app的方法
15.实用小技巧(十五):左侧向右滑动返回上一级控制器
16.实用小技巧(十六):获取设备信息
17.实用小技巧(十七):清除缓存目录
18.实用小技巧(十八):取出gif图的每一帧
19.实用小技巧(十九):获取相机和麦克风权限
20.实用小技巧(二十):游客模式的实现
21.实用小技巧(二十一):版本检测的实现
22.实用小技巧(二十二):键盘遮挡问题
23. 实用小技巧(二十三):获取闪光灯的控制
24. 实用小技巧(二十四):APP页面开启跳转逻辑处理
25. 实用小技巧(二十五)—— 关于UILabel控件宽高的计算
26. 实用小技巧(二十六)—— APP中各种权限监测和申请工具封装
27. 实用小技巧(二十七)—— 控制器跳转逻辑的封装
28. 实用小技巧(二十八)—— 一种字符串的遍历方式
29. 实用小技巧(二十九)—— 汉字的判断以及计数
30. 实用小技巧(三十)—— 数字的判断以及计数
31. 实用小技巧(三十一)—— 版本监测工具的封装
32. 实用小技巧(三十二)—— 项目中代码行数统计
33. 实用小技巧(三十三)—— json和对象之间的转化工具的封装(一)
34. 实用小技巧(三十四)—— 设置一个UILabel控件不同行文字字体样式以及行间距等个性化设置(一)

问题描述

首先看一下一个实用场景,在每日签到活动中,需要启动App的时候就显示敲到界面,但是如果用户不签到,那么tabBar上的我的那个底部item就要显示一个红点,用来提醒用户还没有签到。

这里就说一下这个红点的添加和消失的逻辑。


问题解决

其实,这个问题并不难,很简单的一个UI展示的问题。这里有两个方案:

  • 使用系统API的badgeValue实现,不仅可以实现红点,还可以有数字。但是也有缺点就是视图的样式不能自定义,只能用系统的视图。
  • 使用自定义的UIView来添加,这么做的优点就是可以实现自定义样式。

1. 展示逻辑

首先我们看一下添加逻辑,在UITabBarController实例化的子类中添加如下代码。

@property (nonatomic, strong) UIView *redDotView;

//增加红点逻辑
- (void)addRedDotForMeTabBarItem
{
    CGFloat redDotRadius = 5.0;
    CGFloat topMargin = 5.0;
    NSInteger tabBarItemCount = self.tabBar.items.count;
    CGFloat halfItemWidth = CGRectGetWidth(self.tabBar.bounds) / (tabBarItemCount * 2);
    CGFloat xOffset = halfItemWidth * (2 * 2 + 1) + 3.0;
    UIView *redDotView = [[UIView alloc] initWithFrame:CGRectMake(xOffset, topMargin, redDotRadius * 2, redDotRadius * 2)];
    [self.tabBar addSubview:redDotView];
    redDotView.backgroundColor = [UIColor redColor];
    redDotView.layer.cornerRadius = redDotRadius;
    self.redDotView = redDotView;
}

2. 移除逻辑

那么就在这个tabBar中监听通知,当有的地方签到完成或者其他满足条件的操作就移除这个红点的自定义view即可。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(redDotViewDisappear) name:@"kNotification_has_marked_everyday" object:nil];

- (void)redDotViewDisappear
{
    self.redDotView.hidden = YES;
    [self.redDotView removeFromSuperview];
    self.redDotView = nil;
}

这样就处理完成了,很简单,是吧!下面看一下实现效果。

后记

本篇主要讲述了tabBar上添加红点的业务逻辑处理,是UI的展示效果,实现很简单,但是可通用,感兴趣的给个赞或者关注~~~

你可能感兴趣的:(实用小技巧(三十五)—— UITabBar上业务相关的红点展示和移除逻辑实现(一))