iOS導航欄pop的時候出現短暫藍色

起因

今天看老的項目,突然發現一個問題:

從頁面①push到頁面②,pop回頁面①的時候,發現導航欄上面有那麼一閃而逝的藍色。

解決

然後我就開始考慮這個問題產生的原因:
1. 首先,我檢查了頁面①的導航欄設置。
我在該頁面是把導航欄設置爲透明的

- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController.navigationBar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
}

- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"默認導航欄圖片"] forBarMetrics:UIBarMetricsDefault];

}

然後,我就想着,要不就在viewWillAppear中把導航欄隱藏下,等viewWillDisappear中再把導航欄顯示出來。大不了就重新添加些label,button來模擬一個導航欄出來。
然後我就試了下,發現,並沒有什麼卵用!


  • 接着,我發現同一個屬於頁面①下面的子頁面,進去再pop出來的時候,並沒有那個藍色。
    然後,我就到頁面②中去尋找問題。
    經過對比,我發現,頁面②跟同層級的別的Controller相比,少了些代碼。
    原來,我在別的Controller的viewWillAppear中都手動設置了導航欄的!

引人深思:
這個項目是以前寫的,當時沒有設置基類,所以才導致有些頁面忘記設置導航欄屬性。
tip:

以後各位再構建新的工程的時候,多使用基類,方便省事!!!

原來問題在這裏!接着我就在頁面②的viewWillAppear中添加了相關代碼。問題解決!


  • 發散思維(說白了就是好奇心)驅使下,
    我在頁面②viewWillAppear中設置過後,重新在頁面①中設置導航欄hidden
    發現,也是不行的

他的說法,如果這個 ViewController 是在 TabBarViewController 的 NavigationController 上 Push/Pop 的,那麼只需要把 TabBarViewController 的 View 設置一下白色背景就可以了, 我找到TabbarController,設置背景色,沒卵用!!!


  • 同樣的,我也搜到了別的說是根windows沒有設置背景色的,然後,仍然沒用

  • 如果有大神能看到,請給我講解下這個問題!謝謝!!

PS

說道上面的文章,他有說道一個問題,也是我遇到的

iOS 的 UITableViewCell 有一個很嚴重的問題,是 7.x 某個版本以後引起的,如果給 detailTextLabel.text 設置 nil 或者 "",再設置具體的 text 後有時會顯示不出來,但 Tap 一下能出來。具體的解決辦法是,不要設置 nil"",設置 " " (中間有空格)。真是讓人吐血的 Workaround。

當時的設計是這樣的:
這裏寫圖片描述

然後設置頭像那裏,我想着偷下懶: 設置cell的detailTextLabel爲@“”,再添加一個ImageView,然後添加約束,就可以了。

然後,在查看UI的時候,發現頭像”飛了”,然後我各種調試,才發現是detailTextLabel不顯示,因此,我也使用這種比較拙略的解決方法:

cell.detailTextLabel.text = @" ";
[cell addSubview:self.userIconImgView];
//這裏是Masonry代碼
[self.userIconImgView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.centerY.equalTo(cell);
    make.right.equalTo(cell.extraLabel.mas_right);
    make.size.mas_equalTo(CGSizeMake(60, 60));
}];
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章