一行代碼 搞定為Tabbar 增加小紅點 ,紅色滑動條

在項目開發(fā)中經(jīng)常會遇到,需要在tabbar 上顯示紅色角標 ,紅色小點 ,或者紅色小線條等等,至于紅色角標 系統(tǒng)已經(jīng)直接給我們提供了方法 直接調(diào)用

[self.tabBarItem setBadgeValue:badge];

[self.tabBarItem setBadgeColor: [UIColor redColor] ] ;

那如果要設(shè)置 紅色小圓點 或者滑動條呢 ?又該如何設(shè)置呢?
其實很簡單.創(chuàng)立一個分類就好啦.
首先我們創(chuàng)建項目工程 ,我們的TabbarController 采用自定義的 繼承自UITabbarController,命名為BaseTabBarController,創(chuàng)建三個自控制器的代碼我就不多寫了.直接說干貨,遵守UITabBarControllerDelegate協(xié)議,設(shè)置代理

實現(xiàn)2個方法

  • (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController NS_AVAILABLE_IOS(3_0){
    return YES;
    }

  • (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
    {

}
方法里面暫且什么都不寫
下面開始我們的第二步 ,創(chuàng)建一個Tabbar的分類

#import <UIKit/UIKit.h>

@interface UITabBar (Line)
- (void)showBadgeOnItemIndex:(NSInteger)index;   //顯示小紅點

- (void)hideBadgeOnItemIndex:(NSInteger)index; //隱藏小紅點
@end
#import "UITabBar+Line.h"
#define TabbarItemNums 3.0    //tabbar的數(shù)量 如果是5個設(shè)置為5.0
@implementation UITabBar (Line)
//顯示小紅點
- (void)showBadgeOnItemIndex:(NSInteger)index{
    //移除之前的小紅點
    [self removeBadgeOnItemIndex:index];
   

    //紅點
    [self creatRedCirlce:index];
    //紅條
    //[self creatRedLine:index];
    ![Untitled15.gif](http://upload-images.jianshu.io/upload_images/6796505-f4f41eecbfffcad7.gif?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    
}
//創(chuàng)建紅色條
-(void)creatRedLine:(NSInteger)index
{
    //    //新建小紅條
        UIView *badgeView = [[UIView alloc]init];
        badgeView.tag = 888 + index;
    
        //badgeView.backgroundColor = HexColor(@"FF4800");//顏色:紅色
      badgeView.backgroundColor =[UIColor redColor];
        CGRect tabFrame = self.frame;
    
        float percentX =  (index *2+1) / (TabbarItemNums*2);
    
        CGFloat x = (percentX * tabFrame.size.width)-30/2-1;
    
        CGFloat y = (0.9 * tabFrame.size.height);
        badgeView.frame = CGRectMake(x, y, 30, 3);
        [self addSubview:badgeView];
}

-(void)creatRedCirlce:(NSInteger)index
{
    //新建小紅點
    UIView *badgeView = [[UIView alloc]init];
    badgeView.tag = 888 + index;
    
    //badgeView.backgroundColor = HexColor(@"FF4800");//顏色:紅色
    badgeView.backgroundColor =[UIColor redColor];
    CGRect tabFrame = self.frame;
    //確定小紅點的位置
    
    float percentX =  (index *2+1) / (TabbarItemNums*2);//每個tabbaritem 中心線
    
    //小紅點最好在item 的右上角
    CGFloat itemW=30; //item 寬度  根據(jù)需要來定
    CGFloat x = (percentX * tabFrame.size.width)+itemW/2;//紅點位置可以根據(jù)需要調(diào)整
    
    CGFloat w=10;//紅點寬
    CGFloat h=10;//紅點高
    CGFloat y = (0.1 * tabFrame.size.height);
    badgeView.frame = CGRectMake(x, y, w, h);
    badgeView.layer.masksToBounds=YES;
    badgeView.layer.cornerRadius=h/2;
    [self addSubview:badgeView];
    
}

//隱藏小紅點
- (void)hideBadgeOnItemIndex:(NSInteger)index{
    //移除小紅點
    [self removeBadgeOnItemIndex:index];
}

//移除小紅點
- (void)removeBadgeOnItemIndex:(NSInteger)index{
    //按照tag值進行移除
    for (UIView *subView in self.subviews) {
        if (subView.tag == 888+index) {
            [subView removeFromSuperview];
        }
    }
}

@end

調(diào)用回到之前的 實現(xiàn)的協(xié)議方法
在shouldSelectViewController: 方法中清除 隱藏之前的紅點

在didSelectViewController 顯示紅色小點

- (BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController NS_AVAILABLE_IOS(3_0){
    NSInteger index=self.selectedIndex;
    [self.tabBar hideBadgeOnItemIndex:index];
    
    return YES;
}
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    NSInteger index=self.selectedIndex;
    [self.tabBar showBadgeOnItemIndex:index];
}

這樣就完了么當然不會 這樣運行你會發(fā)現(xiàn) 剛啟動的時候沒有紅色小點 或者小條
so 我們需要在一開始就初始化 設(shè)置一下

  • (void)viewDidLoad
    {
    [super viewDidLoad];
    NSInteger index=0;
    [self.tabBar showBadgeOnItemIndex:index];
    }

下面附上效果圖
//紅點


Untitled15.gif

//紅條


Untitled16.gif
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市狰贯,隨后出現(xiàn)的幾起案子锌仅,更是在濱河造成了極大的恐慌路狮,老刑警劉巖夫壁,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異妇押,居然都是意外死亡拭宁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門对嚼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夹抗,“玉大人,你說我怎么就攤上這事纵竖∧眨” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵靡砌,是天一觀的道長已脓。 經(jīng)常有香客問我,道長通殃,這世上最難降的妖魔是什么度液? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上堕担,老公的妹妹穿的比我還像新娘已慢。我一直安慰自己,他們只是感情好照宝,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布蛇受。 她就那樣靜靜地躺著,像睡著了一般厕鹃。 火紅的嫁衣襯著肌膚如雪兢仰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天剂碴,我揣著相機與錄音把将,去河邊找鬼。 笑死忆矛,一個胖子當著我的面吹牛察蹲,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播催训,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼洽议,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了漫拭?” 一聲冷哼從身側(cè)響起亚兄,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎采驻,沒想到半個月后审胚,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡礼旅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年膳叨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痘系。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡菲嘴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出汰翠,到底是詐尸還是另有隱情龄坪,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布奴璃,位于F島的核電站悉默,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏苟穆。R本人自食惡果不足惜抄课,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一唱星、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧跟磨,春花似錦间聊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至僵蛛,卻和暖如春尚蝌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背充尉。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工飘言, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人驼侠。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓姿鸿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親倒源。 傳聞我的和親對象是個殘疾皇子苛预,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 廢話不多說,直接上干貨 ---------------------------------------------...
    小小趙紙農(nóng)閱讀 3,336評論 0 15
  • *7月8日上午 N:Block :跟一個函數(shù)塊差不多笋熬,會對里面所有的內(nèi)容的引用計數(shù)+1热某,想要解決就用__block...
    炙冰閱讀 2,473評論 1 14
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件突诬、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,022評論 4 62
  • 自從「Critical Thinking」一詞被引人國內(nèi)苫拍,并被翻譯為「批判性思維」芜繁,各種誤解與對其的神化便不斷涌現(xiàn)...
    形而上者為道閱讀 1,292評論 3 6
  • 丈夫去世留下債務(wù)旺隙,妻子有無義務(wù)償還? 婚前財產(chǎn)公證或者律師見證骏令,讓你更無后顧之憂
    ssmilerain閱讀 124評論 0 0