iOS自定義TabBar


本篇我們聊聊如何自定義TabBar。展開這個(gè)問題前,我們先思考一下,為什么要自定義TabBar。

為什么要自定義TabBar?

  • 系統(tǒng)TabBarItem樣式和設(shè)計(jì)圖不一致
  • 系統(tǒng)TabBarItem沒有切換動(dòng)畫效果

如何最小限度的實(shí)現(xiàn)自定義的功能

for (int i = 0; i < self.tabBar.items.count; i ++) {
        id subView = self.tabBar.subviews[i];
        if ([subView isKindOfClass:NSClassFromString(@"UITabBarButton")]) {
            UIControl *itemControl = subView;
            for (UIView *sub in itemControl.subviews) {
                sub.hidden = YES;
            }
            [itemControl addTarget:self action:@selector(didSelectItem:) forControlEvents:(UIControlEventTouchUpInside)];
            UIView *itemView = [UIView new];
            itemView.userInteractionEnabled = NO;
            [itemControl addSubview:itemView];
            [itemView mas_makeConstraints:^(MASConstraintMaker *make) {
                make.edges.equalTo(@0);
            }];
            
            UILabel *title = [UILabel new];
            title.tag = 1000;
            title.text = self.tabBar.items[i].title;
            [title setTextAlignment:(NSTextAlignmentCenter)];
            [itemView addSubview:title];
            [title mas_makeConstraints:^(MASConstraintMaker *make) {
                make.edges.equalTo(@0);
            }];
            
        }
    }
//添加UITabBarButton點(diǎn)擊動(dòng)畫效果
- (void)didSelectItem:(UIControl *)sender{
    NSLog(@"%ld",sender.state);
    if (self.lastItem) {
        UILabel *lastTitle = [self.lastItem viewWithTag:1000];;
        [UIView animateWithDuration:0.2 animations:^{
            lastTitle.transform = CGAffineTransformMakeScale(1.0, 1.0);
        } completion:^(BOOL finished) {
        }];
    }
    UILabel *titleLab = [sender viewWithTag:1000];
    [UIView animateWithDuration:0.2 animations:^{
        titleLab.transform = CGAffineTransformMakeScale(1.3, 1.3);
    } completion:^(BOOL finished) {
    }];
    self.lastItem = sender;
}

這里只提供了一個(gè)可行的思路,來最小限度的減小對(duì)系統(tǒng)TabBarController的影響和使用者的學(xué)習(xí)成本。既然可以在UITabBarButton中加入一個(gè)自定義的View,那Viwe中的內(nèi)容就可以完全自定義。而且由于UITabBarButtonUIControl的子類,那就可以添加點(diǎn)擊事件,用來處理任何想要的動(dòng)畫效果。

其他

先記錄下來思路,怕自己忘了,有時(shí)間了做一個(gè)完整的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 簡(jiǎn)介 UITabBar是iOS App中經(jīng)常使用的系統(tǒng)控件,比如知名App:新浪微博,微信,騰訊QQ等。在實(shí)際的項(xiàng)...
    清蘂翅膀的技術(shù)閱讀 1,968評(píng)論 0 6
  • 系統(tǒng)的 tabbar 中設(shè)置tabbarItem.badgeValue 后顯示樣式是紅色的小數(shù)字,由于UI在設(shè)計(jì) ...
    大兵布萊恩特閱讀 6,299評(píng)論 0 7
  • 日常開發(fā)中的系統(tǒng)自帶的tabbar基本可以滿足需求,但有時(shí)也需要特殊的tabbar來展示。 一.自定義單個(gè)的tab...
    TotoroLee閱讀 2,593評(píng)論 0 0
  • ·>本文原創(chuàng),在此記錄一下自定義TabBar的幾種方式,有適用于微博、QQ空間之類的簡(jiǎn)單方法;也有適用喜馬拉雅,閑...
    peaktan閱讀 1,863評(píng)論 3 11
  • 假期閑來無聊,我也跟風(fēng)看了《三生》,當(dāng)然也是因?yàn)閭€(gè)人比較欣賞楊冪,對(duì)楊冪在劇中飾演的角色自然多了些許注意力。 《三...
    青虎閱讀 2,032評(píng)論 0 6

友情鏈接更多精彩內(nèi)容