用網(wǎng)絡(luò)獲取圖片去替換tabbaritem

最近新增加了個需求 要求由網(wǎng)絡(luò)去獲取圖片迁央。然后去替換tabbar里的image垄潮。但是 嘗試了一下梧奢。tabbar的大小 是根據(jù)你圖片的大小去適應(yīng)的蜂怎。圖片越大 tabbaritem越大。

舉個例子:



就會這樣喂饥。消约。

最后冥思苦想。終于得出2種辦法员帮。

1.是在tabbaritem上邊加一層image去遮蓋tabbaritem或粮。因為imageView不會因為圖片的大小去放大。大小是固定的捞高。
2.是自定義tabbar 創(chuàng)建一個view 里邊包含4個自定義按鈕氯材。(按鈕的圖片大小也是會根據(jù)圖片的大小去自適應(yīng)。所以也要重寫uibuutton的rect方法).


1.第一種方法的邏輯硝岗。

首先你需要知道 tabbar里都有什么控件浓体。
遍歷你的tabbar

效果圖
 for (UIView * tabbar in   self.tabBarController.tabBar.subviews) {
              NSLog(@"%@",[view class]);
        for (UIView * view in tabbar.subviews) {
        }
    }
遍歷tabbar

說明tabbar里一共有倆控件 為uitabbarbutton 私有的類。獲取不到辈讶。我們再進一步的遍歷命浴。

 for (UIView * tabbar in   self.tabBarController.tabBar.subviews) {
        for (UIView * view in tabbar.subviews) {
          NSLog(@"%@",[view class]);
        }
    }
遍歷tabbar.subviews

說明tabbar.subviews里邊4個控件。 因為我一共有2個tabbar 所以有2個圖片 2個文字贱除。
所以我們要這里創(chuàng)建圖片然后去覆蓋生闲。

  for (UIView * tabbar in   self.tabBarController.tabBar.subviews) {
        for (UIView * view in tabbar.subviews) {
            NSLog(@"%@",[view class]);
//這里就是判斷是否是圖片控件。
            if ([view isKindOfClass:NSClassFromString(@"UITabBarSwappableImageView")]) {
// 在這里我們就創(chuàng)建圖片了月幌。如上邊所說 uibutton的圖片大小也是由圖片去控制的碍讯。所以我們要創(chuàng)建一個imageView。
                UIImageView * subView =  [[UIImageView alloc]initWithFrame:view.frame];
                subView.image = self.tabbarItemPicArr[self.tabbarCount];
// 在這里你可以加到這個imageView視圖上扯躺∽叫耍或者你可以加在tabbar里。因為加到這里 你方便去取录语。不然的話 你取出來更改圖片的時候 還需要遍歷一次倍啥。如果取出來的話 你還要去給imageview去設(shè)定一個tag值。
                [tabbar addSubview:subView];
//這里需要設(shè)定原來的imageView隱藏 不然的話 兩個圖片會重疊澎埠。
                view.hidden = YES;
        }
    }

MARK

后來出現(xiàn)一種小bug 你這里替換的tabbaritem 位置會從0.0開始 就像這樣虽缕。


TabbarItem

然后我分別在第一個控制器和自定義tabbar里去便利

遍歷Tabbar

都是從0.0開始 所以tabbaritem位置會變。

后來經(jīng)過思考之后得出結(jié)論
因為蘋果默認的控件都是屬于懶加載模式蒲稳。所以不呈現(xiàn)出來前 沒有位置信息氮趋。
只有在第一個控制器villappear之后 才會真正的創(chuàng)建
所以我在villAppear之后才創(chuàng)建imageView來替代tabbar


第二種邏輯。

遍歷tabbarSubviews

你需要自定義一個button然后去重寫里邊的rect
從上圖中 我們可以得到 圖片的大小為32.所以我們要把button的imageView固定為32.并且要他縱向排列江耀。

- (CGRect)imageRectForContentRect:(CGRect)contentRect {
    
    CGFloat imageWidth;
    imageWidth = 32;
    CGRect rect = CGRectMake((CGRectGetWidth(contentRect) - imageWidth)/2 , 1, imageWidth, imageWidth);
    
    return rect;
}
- (CGRect)titleRectForContentRect:(CGRect)contentRect {
    CGFloat width = CGRectGetWidth(contentRect);
    CGFloat height = CGRectGetHeight(contentRect);
    CGRect rect = CGRectMake((self.frame.size.width - width)/2 , 49 - 33, width, height);
    return rect;
}
// 防止高亮
- (void)setHighlighted:(BOOL)highlighted{ 
}
樣式
  UIView * tabbarView = [[UIView alloc]initWithFrame:self.tabBarController.tabBar.frame];
    
    UIView * lineView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 375, 0.5)];
    lineView.backgroundColor = [UIColor blackColor];
    [tabbarView addSubview:lineView];
    for (NSInteger i = 0; i < self.tabBarController.tabBar.subviews.count; i++) {
        SFTabbarButton * btn  = [[SFTabbarButton alloc]initWithFrame:CGRectMake(i*375/self.tabBarController.tabBar.subviews.count, 0, 375/self.tabBarController.tabBar.subviews.count, 49)];
        [btn setImage:[UIImage imageNamed:@"huoying"] forState:UIControlStateNormal];
        [btn setTitle:@"首頁" forState:UIControlStateNormal];
        btn.titleLabel.font = [UIFont systemFontOfSize:11];
        btn.titleLabel.textAlignment = NSTextAlignmentCenter;
        [btn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];
        [tabbarView addSubview:btn];

    };
    [self.tabBarController.view addSubview:tabbarView];
    self.tabBarController.tabBar.hidden = YES;
       

剩下就是給按鈕設(shè)計點擊事件 跳轉(zhuǎn)了剩胁!~跳轉(zhuǎn)一定要設(shè)置為公共的哦。因為其他的地方會調(diào)用祥国。
就這樣昵观。希望大家多溝通 多交流。~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市索昂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扩借,老刑警劉巖椒惨,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異潮罪,居然都是意外死亡康谆,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門嫉到,熙熙樓的掌柜王于貴愁眉苦臉地迎上來沃暗,“玉大人,你說我怎么就攤上這事何恶∧踝叮” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵细层,是天一觀的道長惜辑。 經(jīng)常有香客問我,道長疫赎,這世上最難降的妖魔是什么盛撑? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮捧搞,結(jié)果婚禮上抵卫,老公的妹妹穿的比我還像新娘。我一直安慰自己胎撇,他們只是感情好介粘,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晚树,像睡著了一般碗短。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上题涨,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天偎谁,我揣著相機與錄音,去河邊找鬼纲堵。 笑死巡雨,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的席函。 我是一名探鬼主播铐望,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了正蛙?” 一聲冷哼從身側(cè)響起督弓,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎乒验,沒想到半個月后愚隧,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡锻全,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年狂塘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鳄厌。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡荞胡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出了嚎,到底是詐尸還是另有隱情泪漂,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布歪泳,位于F島的核電站窖梁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏夹囚。R本人自食惡果不足惜纵刘,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望荸哟。 院中可真熱鬧假哎,春花似錦、人聲如沸鞍历。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽劣砍。三九已至惧蛹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間刑枝,已是汗流浹背香嗓。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留装畅,地道東北人靠娱。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像掠兄,于是被迫代替她去往敵國和親像云。 傳聞我的和親對象是個殘疾皇子锌雀,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

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

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,504評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件迅诬、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,022評論 4 62
  • “大師兄腋逆,你就放我們下山吧!你不說侈贷,我和小師妹紫嫣不說惩歉,師父怎么可能知道?”燕南征說道铐维。 只見一位三十出頭...
    竹鴻初閱讀 478評論 0 2
  • 2009-08-18 00:42:33 盛夏時光柬泽,陽光明媚慎菲。 遇見你嫁蛇。 也許是我多情 暗生情愫。 愛露该,要怎么說出口...
    國王的心事閱讀 326評論 0 1
  • 不同的時候睬棚,不同的感觸。不同的階段解幼,不同的想法抑党。我想我可能也到了這個不同的階段,30歲撵摆! 人說底靠,三十而立√芈粒總是在想...
    凌晨之光閱讀 217評論 0 0