設(shè)置導(dǎo)航條透明的幾種方案

前言

在開發(fā)中常常會(huì)遇到將導(dǎo)航條設(shè)置為透明的效果,所有收集了幾種方案,供君使用

  • 第一種: 直接調(diào)用它的隱藏屬性

// 視圖即將實(shí)現(xiàn)
- (void)viewWillAppear:(BOOL)animated {
 [super viewWillAppear:animated];]
 [self.navigationController setNavigationBarHidden:YES animated:YES];
}

// 視圖即將消失
- (void)viewWillDisappear:(BOOL)animated { 
[super viewWillDisappear:animated];
 [self.navigationController setNavigationBarHidden:NO animated:YES];
}

注意點(diǎn): 使用這個(gè)方法是可以將導(dǎo)航條設(shè)置為透明, 但是有一個(gè)缺點(diǎn),就是當(dāng)push大盤另一個(gè)控制器時(shí), 該控制器的的導(dǎo)航條會(huì)有一個(gè)動(dòng)畫的顯示, 客戶體驗(yàn)不是很好

  • 第二種: 在代理方法中設(shè)置它的隱藏屬性

#import "ViewController.h"
#import "WGViewController.h"


// 遵守代理
@interface ViewController ()<UINavigationControllerDelegate>

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

  // 設(shè)置代理
    self.navigationController.delegate = self;

}

// 跳轉(zhuǎn)界面
- (IBAction)jump {
    
    WGViewController *Vc = [[WGViewController alloc] init];
    
    Vc.view.backgroundColor = [UIColor yellowColor];
    [self.navigationController pushViewController:Vc animated:YES];
    
}

#pragma mark - UINavigationControllerDelegate
// 即將顯示的導(dǎo)航控制器
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    
    // 是否要隱藏導(dǎo)航條(判斷要顯示導(dǎo)航條的控制器是否是自己)
    BOOL isShowViewController = [viewController isKindOfClass:[self class]];
    
    [self.navigationController setNavigationBarHidden:isShowViewController animated:YES];
   
}

@end

  • 第三種: 添加一張空的圖片到導(dǎo)航條上

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    // 設(shè)置導(dǎo)航欄為透明,其原理就是傳入一個(gè)沒有圖片,但又不為空的UIImage給導(dǎo)航欄
    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
    
    // 把導(dǎo)航欄上的分隔線用一個(gè)沒有圖片,但又不為空的UIImage給覆蓋掉
    [self.navigationController.navigationBar setShadowImage:[UIImage new]];
}

如果需要跳轉(zhuǎn)到下一個(gè)控制器,但是下一個(gè)控制器又不需要隱藏,可以在- (void)viewWillDisappear:(BOOL)animated 方法中設(shè)置上面的代碼,只需要將[UIImage new]設(shè)置為nil即可

最優(yōu)方案:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:YES];
}
-(void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES];
}

總結(jié)

我在項(xiàng)目中使用的是第三種, 覺得用起來還可以,也達(dá)到了我想要的效果,如果覺得還可以的可以點(diǎn)個(gè)喜歡,還會(huì)持續(xù)更新的...
最后編輯于
?著作權(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)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,027評(píng)論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,274評(píng)論 4 61
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,140評(píng)論 1 92
  • 安爺爺~新年好!我是昨天和您見過的薯?xiàng)l老師,咱這周六日有個(gè)親子活動(dòng),希望可以帶寶貝過來參加,周五的時(shí)候我會(huì)給咱去個(gè)...
    風(fēng)流花吹雪閱讀 289評(píng)論 0 0
  • 文若能直抒胸臆,既能讓讀者閱讀時(shí)感覺舒心,更能讓作者在寫完后感到酣暢淋漓。一篇能完整表達(dá)作者心意的文章,必然會(huì)是一...
    的確良閱讀 3,599評(píng)論 1 1

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