標籤:缺點 使用 控制器 UI pos elf 手勢 就是 需要
在項目中經常碰到首頁頂部是無限輪播,需要靠最上面顯示.有的設定導覽列為透明等一系列的方法,這個可以藉助第三方.或者乾脆簡單粗暴的直接隱藏掉導覽列.可是push到下一個頁面的時候是需要導覽列的,如何做了,這裡給出兩種方法.
- 第一種做法
-注意這裡一定要用動畫的方式隱藏導覽列,這樣在使用滑動返回手勢的時候效果最好,和上面動圖一致.這樣做有一個缺點就是在切換tabBar的時候有一個導覽列向上消失的動畫.
- (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];}
- 第二種做法
- 設定self為導航控制器的代理,實現代理方法,在將要顯示控制器中設定導覽列隱藏和顯示,使用這種方式不僅完美切合滑動返回手勢,同時也解決了切換tabBar的時候,導覽列動態隱藏的問題.
@interface WLHomePageController () <UINavigationControllerDelegate>@end@implementation WLHomePageController #pragma mark - lifeCycle- (void)viewDidLoad { [super viewDidLoad]; // 設定導航控制器的代理為self self.navigationController.delegate = self;}#pragma mark - UINavigationControllerDelegate// 將要顯示控制器- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated { // 判斷要顯示的控制器是否是自己 BOOL isShowHomePage = [viewController isKindOfClass:[self class]]; [self.navigationController setNavigationBarHidden:isShowHomePage animated:YES];}
iOS導覽列的正確隱藏方式