RDVTabBarController

RDVTabBarController是一個(gè)用來(lái)自定義tabbar的三方庫(kù),使用簡(jiǎn)單,不過(guò)隱藏tabbar的時(shí)候比較麻煩
用法:與系統(tǒng)tabbar基本一樣。
隱藏:可以在RootViewControllerviewWillAppearviewWillDisappear中判斷tabbar的隱藏與顯示
問(wèn)題:出現(xiàn)過(guò)一個(gè)詭異的bug,有時(shí)候跳轉(zhuǎn)到tabbarroot頁(yè)面中,tabbar沒(méi)有出現(xiàn),還沒(méi)有跟蹤到問(wèn)題的根由所在。

-(void) viewWillAppear:(BOOL)animated
{
    [self.navigationController setNavigationBarHidden:self.hideNavigationBar animated:YES];
    if (!self.navigationController) {
        [[self rdv_tabBarController] setTabBarHidden:YES animated:NO];
        return;
    }
    if (self.navigationController.viewControllers.count <= 1) {
        [[self rdv_tabBarController] setTabBarHidden:NO animated:NO];
        return;
    }   
    [super viewWillAppear:animated];
    if (self) {
        [DataConversion beginLogPageView:NSStringFromClass([self class])];
    }
}

-(void)viewWillDisappear:(BOOL)animated
{
    if (self) {
        [DataConversion endLogPageView:NSStringFromClass([self class])];
    }
    id cla=[self.navigationController.viewControllers lastObject];
    if ([cla isKindOfClass:[HomeViewController class]]||[cla isKindOfClass:[YewuViewController class]]||[cla isKindOfClass:[SettingViewController class]]||[cla isKindOfClass:[MessageViewController class]]) {
        [[self rdv_tabBarController] setTabBarHidden:NO animated:NO];
    }
    if (!self.navigationController) {
        [[self rdv_tabBarController] setTabBarHidden:YES animated:NO];
        return;
    }
    
    if (!self.navigationController.viewControllers.count) {
        TabBarViewController *tab=(TabBarViewController *)[EquipmentInformation getCurrentViewController];
        if ([tab isKindOfClass:[TabBarViewController class]]) {
            tab.tabBarHidden=NO;
        }
    }
    [super viewWillDisappear:animated];
}

RDVTabBarControllerRDVTabBarControllerRDVTabBarRDVTabBarItem組成

//tabbar圖片,對(duì)selectedImage與unselectedImage進(jìn)行賦值 與 finishedSelectedImage、finishedUnselectedImage屬性一致
- (void)setFinishedSelectedImage:(UIImage *)selectedImage withFinishedUnselectedImage:(UIImage *)unselectedImage

//title屬性,tabbar的title
@property (nonatomic, copy) NSString *title;

然后在 RDVTabBarItem:UIControl 類(lèi)中的

- (void)drawRect:(CGRect)rect 

方法中用coreText對(duì)imgtitle進(jìn)行繪制


RDVTabBar : UIViewRDVTabBarItem添加點(diǎn)擊事件,添加_backgroundView

//設(shè)置item的frame
- (void)layoutSubviews 

//為item添加點(diǎn)擊事件并添加到RDVTabBar上
- (void)setItems:(NSArray *)items {
    for (RDVTabBarItem *item in _items) {
        [item removeFromSuperview];
    }
    _items = [items copy];
    for (RDVTabBarItem *item in _items) {
        [item addTarget:self action:@selector(tabBarItemWasSelected:) forControlEvents:UIControlEventTouchDown];
        [self addSubview:item];
    }
}

RDVTabBarController : UIViewController

//添加tabbar上的所有viewController,對(duì)RDVTabBarItem進(jìn)行初始化,并對(duì)[self tabBar]的items屬性賦值。
@property (nonatomic, copy) IBOutletCollection(UIViewController) NSArray *viewControllers;
- (void)setViewControllers:(NSArray *)viewControllers {
        NSMutableArray *tabBarItems = [[NSMutableArray alloc] init];
        for (UIViewController *viewController in viewControllers) {
            RDVTabBarItem *tabBarItem = [[RDVTabBarItem alloc] init];
            [tabBarItem setTitle:viewController.title];
            [tabBarItems addObject:tabBarItem];
            [viewController rdv_setTabBarController:self];
        }
        [[self tabBar] setItems:tabBarItems];
}
//返回某個(gè)viewController
@property (nonatomic, weak) UIViewController *selectedViewController;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • RDVTabBarController 是一個(gè)定制化的TabBarController庫(kù),可動(dòng)畫(huà)顯示隱藏tabba...
    一劍書(shū)生閱讀 5,194評(píng)論 2 12
  • 最近在做新項(xiàng)目然后嘗試用 Vue 開(kāi)發(fā),學(xué)新技術(shù)學(xué)得不亦樂(lè)乎。但iPhone X馬上可以預(yù)購(gòu)了,數(shù)了數(shù)手頭上的項(xiàng)目...
    暮歸傾城閱讀 1,494評(píng)論 0 2
  • 本文主要針對(duì)底部凸起的 TabBar 這種特殊需求,不感興趣的可以直接繞過(guò)~ 最近做的一個(gè)項(xiàng)目需要底部凸起的 Ta...
    Danis閱讀 1,667評(píng)論 0 1
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,198評(píng)論 4 61
  • 在iOS開(kāi)發(fā)中經(jīng)常會(huì)涉及到觸摸事件。本想自己總結(jié)一下,但是遇到了這篇文章,感覺(jué)總結(jié)的已經(jīng)很到位,特此轉(zhuǎn)載。作者:L...
    WQ_UESTC閱讀 6,090評(píng)論 4 26