自定義TabBar

1.ios之UITabBarItem顯示真實自定義的圖片而非顏色填充

      讓TabBarItem 顯示出咱們設置的圖片的真實樣子,須要看如下設置方法在繼承自UITabBarControll的CustomTabBarControll的viewdidload方法中,拿到全部的item而後統一設置成自定義的圖片分別是選中和未選中,針對ios7之後

_tabBarController = [[UITabBarController alloc]init];
    [_tabBarController setViewControllers:@[recNav,feedNav,postNav,loginNav]];
    // 拿到 TabBar 在拿到想應的item
    UITabBar *tabBar = _tabBarController.tabBar;
    UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
    UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
    UITabBarItem *item2 = [tabBar.items objectAtIndex:2];
    UITabBarItem *item3 = [tabBar.items objectAtIndex:3];
    // 對item設置相應地圖片
    item0.selectedImage = [[UIImage imageNamed:@"recognize-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];;
    item0.image = [[UIImage imageNamed:@"recognize"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
     
    item1.selectedImage = [[UIImage imageNamed:@"life-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];;
    item1.image = [[UIImage imageNamed:@"life"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
     
    item2.selectedImage = [[UIImage imageNamed:@"edit-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];;
    item2.image = [[UIImage imageNamed:@"edit"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
     
    item3.selectedImage = [[UIImage imageNamed:@"setting-1"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];;
    item3.image = [[UIImage imageNamed:@"setting"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

      有的時候會出現圖片下面有一塊空白的狀況,解決辦法是:設置uibaritem 的 imageInsets, top和bottom 一一對應 好比

    [item1 setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)];

 

2.隱藏原有的TabBar,使用UIView徹底從新定義TabBar,ios

     這樣的好處就是,定製化的程度很高,並且不少東西能夠徹底推倒重來,可是有一個很嚴重的問題,當使用ide

viewController.hidesBottomBarWhenPushed = YES的時候,仍是沒法隱藏UITabBar,這個始終沒法隱藏,除非採用自定製的動畫移開這個UIView或者設置post

這個爲Hidden, 最重要的問題也在這裏, 因此採用隱藏原有的TabBar的方式以後不少人抱怨沒法經過viewController.hidesBottomBarWhenPushed = YES動畫

來隱藏TabBar,網上有不少相似的代碼,我這裏就不貼源代碼了,問題已經分析出來了。ui

網易新聞的iOS客戶端就是這樣的方式實現的,有一點點小的瑕疵spa

還有一種類型的TabBar可使用這樣的方式來實現,上截圖3d

這個就徹底是重寫了TabBar,並且和之前的系統原生的沒有任何關係了,可是用的很少。code

相關文章
相關標籤/搜索