2012-11-29 50 views
1

我想要實現與iPad上的Photos應用完全相同的效果:在圖庫控制器中顯示純黑色導航欄,然後在查看照片時顯示透明。將UINavigationBar的外觀從固體改爲透明

當我在AppDelegate中初始化我的導航控制器後,我可以使用下面的代碼更改樣式,但不能在AppDelegate之外。但是,一旦導航控制器在屏幕上並設置一次,navigationBar就成爲只讀屬性。

如果有人能分享如何完成,我將不勝感激。謝謝。

self.navigationController.navigationBar.tintColor = [UIColor clearColor]; 
    self.navigationController.navigationBar.translucent = YES; 
    self.navigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent; 
+0

那是不透明的,它實際上隱藏了導航條.. – vishy

+0

是的,它最初隱藏它。但敲擊顯示背後有照片的透明導航欄。 –

回答

1

UINavigationBar的在UIBarStyleBlackTranslucentbarStyle不能解決它的位置,因爲它通常在其他風格做。在UIBarStyleBlackTranslucent風格它只是重疊在你的看法和意見的內容被翻譯和view高度也增加。

,如果你正在展示的照片,然後第一個隱藏的導航欄:

[[self navigationController] setNavigationBarHidden:YES animated:NO]; 

現在你的導航欄的樣式設置爲UIBarStyleBlackTranslucent

[self.navigationController.navigationBar setBarStyle:UIBarStyleBlackTranslucent]; 

然後顯示您的ImageView(或滾動視圖與圖像 - 取決於你邏輯)。然後點擊你的imageview你可以顯示並隱藏吧)

// Show/Hide bar 
// Let say you've a bool 'shown' for current status of navbar's visibility. 
if (!shown) { 
    [[self navigationController] setNavigationBarHidden:YES animated:YES]; 
}else{ 
    [[self navigationController] setNavigationBarHidden:NO animated:YES]; 
} 
shown = !shown; 

希望這會做到這一點。一旦你退出圖庫,你永遠不會忘記將barStyle重新設置爲UIBarStyleBlackOpaque。

+0

謝謝,你是個傳奇。我必須說,這是一個讓它工作的奇怪方式。 –

1

好像你想要在Gallery上顯示navigationBar,所以在選擇照片後不需要改變任何東西,把NavigationBar隱藏在PhotoViewController中。

-(void) viewDidLoad 
{ 
    self.navigationController.navigationBar.barStyle=UIBarStyleBlackTranslucent; 
    self.navigationController.navigationBar.hidden = NO; 
} 

和在viewWillAppear中

-(void) viewWillAppear 
{ 
    self.navigationController.navigationBar.hidden = YES; 
} 

然後創建執行UITapGestureRecognizer其中在單個抽頭被隱藏的屬性設置爲YES顯示的導航欄的自定義方法。