2013-02-08 74 views
1

所以我正在構建一個iOS應用程序,並且我將UINavigationBar自定義爲比默認大小更高。然而,出現了一些問題。自定義UINavigationBar高度問題

  1. 我的內容的行爲就好像UINavigationBar是默認高度一樣。這會導致y = 0中的任何視圖實際上被我的較高UINavigationBar隱藏或部分隱藏。我必須手動將視圖向下放置正確的偏移量,這不是一個非常大的問題,但我很好奇是否有人找到了解決此問題的方法。本質上,我的UINavigationBar被視爲一個具有較大背景圖像的普通背景。

  2. 如果被點擊的部分低於正常UINavigationBar的典型44px底部,那麼我的UINavigationBar中的任何視圖/按鈕都不可點擊。任何在正常範圍內的工作都可以正常工作,但低於44px標記它不會註冊。同樣,這就好像我的UINavigationBar被應用程序視爲具有正常高度但大背景圖像的應用程序。這是一個非常重要的問題,我真的需要解決。

下面是修改我的UINavigationBar的代碼:

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navBarBackground_iPhone.png"] forBarMetrics:UIBarMetricsDefault]; 
[self.navController.navigationBar setBackgroundColor:[UIColor whiteColor]]; 
[self.navController.navigationBar setFrame:CGRectMake(0, 0, self.frame.size.width, 72)]; 

這是我的UINavigationController分配,並用根視圖控制器初始化後,在我的主窗口的-makeKeyAndVisible執行。背景圖片寬320px,高72px(@ 2x版本爲雙倍)。

正如你所看到的,我嘗試在這裏設置UINavigationBar的高度,在這部分代碼看起來並不粘住之後。它恢復到44px。

我試過UINavigationBar子類失敗。任何幫助是極大的讚賞。

+0

聽起來很複雜。雖然您可能想考慮_why_您正在改變高度,因爲堅持用戶熟悉的用戶界面通常是最好的選擇。 – Patrick 2013-02-08 16:47:11

+1

有用的帖子:http://stackoverflow.com/questions/8726006/custom-uinavigationbar-with-custom-height-causes-the-uibarbuttonitems-to-be-pos,http://stackoverflow.com/questions/2133257/ iphone-如何設置,UINavigationBar的高度。 – petert 2013-02-08 17:00:32

+0

@petert您的第二個鏈接中的最佳答案非常棒!它解決了我的兩個問題。謝謝! – diakonos 2013-02-09 10:23:10

回答

0

嘗試繼承UINavigationBar的並覆蓋下面的方法:

- (void)drawRect:(CGRect)rect 
{ 
    int heightYouWant = 100; 

    UIImage *image = [UIImage imageNamed:@"title_bar_bg.png"]; 
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, heightYouWant)]; 

    self.tintColor = [UIColor colorWithRed:1/255.0 green:62/255.0 blue:130/255.0 alpha:1]; 
} 
+0

不幸的是,這並沒有爲我工作。它會更改背景圖像,但對UINavigationBar的高度和根視圖控制器的位置沒有影響。 – diakonos 2013-02-09 06:21:14

0

添加這個方法將你UINavigationBar的子類:

- (void)layoutSubviews { 
    [super layoutSubviews]; 
    CGRect barFrame = self.frame; 
    barFrame.size.height = heightYouWant; 
    self.frame = barFrame; 
} 
+0

這確實會更改UINavigationBar的高度,以便現在正確顯示背景圖像。然而,它似乎也不影響視圖如何與UINavigationBar相關。我需要手動設置視圖的y-原始大小,我的UINavigationBar高於默認的44px,只是爲了使它看起來在y = 0。 – diakonos 2013-02-11 08:43:53