實用小技巧(三十五)—— 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的展示效果,實現很簡單,但是可通用,感興趣的給個贊或者關注~~~

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 前幾天,有人在同學群里發了一個煤油燈的圖片,一下子把我的記憶拉回到了童年。從我記事開始,伴隨著家里照明的,除了陽光...
    小胖孩的日記本閱讀 1,488評論 27 66
  • 今天又是一段被陽光普照的日子這樣的溫度讓人覺得安逸(18℃),一個人在家,隨便應付了午飯。 這一天,強迫自己讀完了...
    柴八度閱讀 126評論 0 1
  • 秦嶺山下的清水頭村依山榜水,山清水秀,每年四月萬畝桃花盛開,七月荷花滿池塘,游人如織。秋天的山村絲毫不亞于春,夏的...
    柳絮飛雪閱讀 368評論 0 0