iOS導(dǎo)航欄和底部tabbar的隱藏和背景色

我項(xiàng)目的主頁常見的是UITabbarController + UINavigationController形式

屏幕快照 2016-07-17 下午7.54.45.png

因?yàn)閷?dǎo)航欄是自定義的萍肆,所以需要把所有導(dǎo)航欄都隱藏掉,再在每個(gè)界面自己寫導(dǎo)航欄視圖(感覺好坑啊点晴,以后應(yīng)該會(huì)改)

因此锉走,我寫了重寫了
一個(gè)繼承于UINavigationController的NavigationController
和一個(gè)繼承于UITabBarController的TabBarController。

一. TabBarController中的代碼如下:
- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the
    
    //A记劈,(B盖腕、C一樣)
    ViewControllerA *aVC = [ViewControllerA new];
    aVC.tabBarItem.title = @"主頁";
    aVC.tabBarItem.image = [[UIImage imageNamed:@"a_unselected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    aVC.tabBarItem.selectedImage = [[UIImage imageNamed:@"a_selected"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    NavigationController *aNavi = [[NavigationController alloc] initWithRootViewController:aVC];
    
    //設(shè)置tabBar背景色
    [self.tabBar setBackgroundImage:[Tool createImageWithColor:UIColorFromHex(0x63DDA1)]];
    //字體顏色
    [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor whiteColor]} forState:UIControlStateNormal];
    [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: UIColorFromHex(0xEE9754)} forState:UIControlStateSelected];
    
    self.viewControllers = @[aNavi, bNavi, cNavi];
}
二. 在NavigationController中

之前的寫法(×):

//重寫方法[pushViewController: animated:]
//可攔截NavigationController子控制器中所有的push操作赫冬,
//因此在其中設(shè)置一句隱藏代碼,其他界面就都不用設(shè)置了溃列。
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    //隱藏tabbar劲厌,(A、B听隐、C界面上不隱藏补鼻,其他界面都隱藏)
    //一定要在push之前隱藏,否則無效雅任,
    //所以风范,如果在調(diào)用 [super pushViewController: animated:] 后再寫判斷隱藏是無效的
    if ([viewController isKindOfClass:[ViewControllerA class]] ||
        [viewController isKindOfClass:[ViewControllerB class]] ||
        [viewController isKindOfClass:[ViewControllerC class]])
    {
        viewController.hidesBottomBarWhenPushed = NO;
    }
    else {
        viewController.hidesBottomBarWhenPushed = YES;
    }
    
    //先調(diào)用父類push
    [super pushViewController:viewController animated:animated];
    //隱藏導(dǎo)航欄,
    [viewController.navigationController setNavigationBarHidden:YES];
}

更正(√):

//舊的寫法不僅繁瑣椿访,而且乌企,當(dāng)要push的頁面在tabBar中也有時(shí)處理會(huì)很麻煩。
//只要navigationController.viewControllers的第一個(gè)控制器隱藏就行了
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    if ((self.viewControllers.count > 0) && (viewController != self.viewControllers[0])) {
        viewController.hidesBottomBarWhenPushed = YES;
    }
    [super pushViewController:viewController animated:animated];
    [viewController.navigationController setNavigationBarHidden:YES];
}

然后就ok了成玫。

另外,關(guān)于TabBar設(shè)置背景顏色,我遇到兩個(gè)坑

使用代碼直接設(shè)置背景顏色居然無效哭当!

//無效
[[UITabBar appearance] setBackgroundColor:UIColorFromHex(0x63DDA1)];

百度了下得設(shè)置背景圖片才有效猪腕,經(jīng)試驗(yàn) 下面3中設(shè)置方法均有效

//1.
[self.tabBar setBackgroundImage:[Tool createImageWithColor:UIColorFromHex(0x63DDA1)]];
//2.
[[UITabBar appearance] setBackgroundImage:[Tool createImageWithColor:UIColorFromHex(0x63DDA1)]];

//3. 第3種千萬別忘了設(shè)置self.tabBar.opaque = YES,否則還是會(huì)出現(xiàn)tabBar的效果
UIView *tabBarBgColorView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tabBar.bounds.size.width, self.tabBar.bounds.size.height)];
tabBarBgColorView.backgroundColor = UIColorFromHex(0x63DDA1);
[self.tabBar insertSubview:tabBarBgColorView atIndex:0];
self.tabBar.opaque = YES;
把16進(jìn)制轉(zhuǎn)換成顏色的宏定義:
#define UIColorFromHex(s) [UIColor colorWithRed:(((s & 0xFF0000) >> 16))/255.0 green:(((s & 0xFF00) >> 8))/255.0 blue:((s & 0xFF))/255.0 alpha:1.0]
#define UIColorFromHexA(s, a) [UIColor colorWithRed:(((s & 0xFF0000) >> 16))/255.0 green:(((s & 0xFF00) >> 8))/255.0 blue:((s & 0xFF))/255.0 alpha:a]
#define UIColorFromRGBA(r, g, b, a) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:(a)]
用顏色生成圖片的代碼:
//用顏色創(chuàng)建一張圖片
+ (UIImage *)createImageWithColor:(UIColor *)color
{
    CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
    UIGraphicsBeginImageContext(rect.size);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColorWithColor(context, [color CGColor]);
    CGContextFillRect(context, rect);
    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末钦勘,一起剝皮案震驚了整個(gè)濱河市陋葡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌彻采,老刑警劉巖腐缤,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異肛响,居然都是意外死亡岭粤,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門特笋,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剃浇,“玉大人,你說我怎么就攤上這事猎物』⑶簦” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵蔫磨,是天一觀的道長淘讥。 經(jīng)常有香客問我,道長堤如,這世上最難降的妖魔是什么蒲列? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮煤惩,結(jié)果婚禮上嫉嘀,老公的妹妹穿的比我還像新娘。我一直安慰自己魄揉,他們只是感情好剪侮,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著洛退,像睡著了一般瓣俯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上兵怯,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天彩匕,我揣著相機(jī)與錄音,去河邊找鬼媒区。 笑死驼仪,一個(gè)胖子當(dāng)著我的面吹牛掸犬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播绪爸,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼湾碎,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了奠货?” 一聲冷哼從身側(cè)響起介褥,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎递惋,沒想到半個(gè)月后柔滔,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡萍虽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年睛廊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贩挣。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡喉前,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出王财,到底是詐尸還是另有隱情卵迂,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布绒净,位于F島的核電站见咒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏挂疆。R本人自食惡果不足惜改览,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望缤言。 院中可真熱鬧宝当,春花似錦、人聲如沸胆萧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跌穗。三九已至订晌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蚌吸,已是汗流浹背锈拨。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留羹唠,地道東北人奕枢。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓娄昆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親验辞。 傳聞我的和親對象是個(gè)殘疾皇子稿黄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

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

  • *7月8日上午 N:Block :跟一個(gè)函數(shù)塊差不多喊衫,會(huì)對里面所有的內(nèi)容的引用計(jì)數(shù)+1跌造,想要解決就用__block...
    炙冰閱讀 2,492評論 1 14
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件族购、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,117評論 4 61
  • 總是在孤獨(dú)無助的時(shí)候黯然神傷,內(nèi)心被恐懼和脆弱所吞噬瑟幕。 大學(xué)畢業(yè)已經(jīng)三年了磕蒲,時(shí)光一晃而過,我還是那個(gè)我只盹,沒有變強(qiáng)大...
    冷笒冰閱讀 318評論 0 2
  • 這兩天辣往,經(jīng)過一些事情的串聯(lián),發(fā)現(xiàn)自己在選擇面前殖卑,做出改變或者不改變的選擇還是受到自己不想改變現(xiàn)狀的限制站削。 做出的選...
    Ceeport_寶閱讀 726評論 0 0
  • 自由寫作.轉(zhuǎn)型與蛻變第二期第1篇 因?yàn)橐獪?zhǔn)備新一年的進(jìn)店了,這幾天在研究CEM的資料孵稽。 CEM的宗旨是“打造客戶鐘...
    真言臻宇閱讀 522評論 0 5