1

我有一個自定義圖像標題在uinavigationbar上方。我這樣做這個代碼:從活動狀態返回時,uinavigationbar向上移動

self.navController.view.frame = CGRectMake(0.0, 0.0, 320.0, 480.0); 
self.navController.navigationBar.frame = CGRectMake(0.0, 73.0, 320.0, 44.0); 

UIView *checkNav = [self.navController.view viewWithTag:9999]; 
if (checkNav == nil) { 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"header-logo.jpg"]]; 
    imgView.tag = 9999; 
    [imgView setFrame:CGRectMake(0.0, 23.0, 320.0, 50.0)]; 
    [self.navController.view addSubview:imgView]; 
} 

這很好。但是,當應用程序不活動時(點擊主iphone主頁按鈕),然後回到應用程序,uinavigationbar會移動到屏幕頂部的默認位置,並隱藏在自定義標題圖像後面。

我試過把代碼扔到applicationDidBecomeActive中,但它沒有幫助。任何幫助將不勝感激。

謝謝!

+0

請包括您「投擲」到applicationDidBecomeActive中的代碼。 – jrturton 2011-12-29 18:11:01

回答

2

你得到的docs警告一下:

由於只有少數例外,你永遠不應該直接修改導航欄對象。它是允許修改barStyle或導航欄的半透明特性,但你必須永遠不會改變它的框架,邊界,或α值直接

說了這麼多,你應該能夠通過重複獲得的效果你的上面的代碼在applicationDidBecomeActive或applicationWillEnterForeground中,假設你有一個指向導航控制器的指針。您可能會發現隱藏並重新顯示導航欄是必需的(一點點黑客,但它可以幫助 - 我有隱藏/顯示狀態欄和導航欄不會到其正確的地方類似的問題)

+0

啊!我在文檔中錯過了......感謝您指出了這一點。由於導航欄的原因,我無法將該應用拒之門外。所以,我將改變設計,將導航欄放回原來的位置。謝謝! – TheTC 2011-12-29 21:03:53

0

把代碼放到viewWillAppear中怎麼樣?

+0

這對第一次「醒來」(只是再次嘗試以確保)不起作用,但是一旦應用程序返回並導航到已設置爲viewWillAppear的視圖,它會自行更正。只是沒有負載。如果這是有道理的。 =) – TheTC 2011-12-29 17:08:48

+0

有點難倒了,它是否必須是一個導航欄,你可以使用工具欄嗎? – Openside 2011-12-29 18:06:27

相關問題