你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS導航欄pop的時候出現短暫藍色

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

編輯:IOS開發綜合

起因

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

從頁面①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
發現,也是不行的 我想到了我在網上查詢的別人的問題以及解決方法解決 IOS View Controller Push/Pop 時的黑影

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

同樣的,我也搜到了別的說是根Windows沒有設置背景色的,然後,仍然沒用。 如果有大神能看到,請給我講解下這個問題!謝謝!! PS

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

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

當時的設計是這樣的:
IOS導航欄pop的時候出現短暫藍色

然後設置頭像那裡,我想著偷下懶: 設置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));
}];

以上就是iOS導航欄pop的時候出現短暫藍色的全文介紹,希望對您學習和使用ios應用開發有所幫助.[db:作者簡介][db:原文翻譯及解析]

【iOS導航欄pop的時候出現短暫藍色】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved