2017-09-25 149 views
3

如何將導航欄設置爲透明並在iOS 11中從普通透明到透明平滑過渡?如何在iOS 11中將導航欄設置爲透明11

在iOS 11之前,我找到了_UIBarBackground視圖並將其設置爲alphaviewWillAppear:,並且在彈出,推送和向後滑動時它工作正常。

但是在iOS 11中,_UIBarBackground的alpha將自動在viewDidAppear後設置爲1。

所以我很好奇,有沒有其他完美的解決方案?

+0

你試過'uicolor.clearcolor'嗎? –

回答

0
  • 設置「爲下視圖控制器頂棒」在情節串連圖板,這樣你的視圖將是下導航欄

  • 到視圖添加子視圖與幀{0,0,屏幕寬度,64},或使用自動佈局約束。這種觀點的

  • 設置背景色:

enter image description here

導航欄的設置背景透明:

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] 
          forBarMetrics:UIBarMetricsDefault]; 
    self.navigationController.navigationBar.shadowImage = [UIImage new]; 
    self.navigationController.navigationBar.translucent = YES; 
    self.navigationController.view.backgroundColor = [UIColor clearColor]; 
    self.navigationController.navigationBar.backgroundColor = [UIColor clearColor]; 
} 

現在你可以改變yelow以透明動畫

示例項目:https://github.com/josshad/AnimatedNavBar

+1

通過這種方式,我必須在每個視圖控制器中添加這個視圖,這不是一個簡單的方式,我認爲這並不安靜。 –

+1

是的。但在這種情況下,您只使用公共API。用於創建導航欄透明的代碼,您可以轉移到uinavigationcontroller的類別。創建彩色標題視圖的代碼 - 在uiviewcontroller子類中。 – Josshad

+0

完美。這對我有用。 – Alexander