2013-04-22 63 views
0

我想設置縱向和橫向導航的uinavigationbar背景圖像。我使用下面的代碼:當導航方向從橫向改變爲縱向時,導航欄背景圖像不能正確調整大小

UIImage *navbarImage = [[UIImage imageNamed:@"navbar"] 
          resizableImageWithCapInsets:UIEdgeInsetsMake(0, 9.0, 0, 9.0)]; 
UIImage *navbarLandscapeImage = [[UIImage imageNamed:@"navbar-landscape"] 
           resizableImageWithCapInsets:UIEdgeInsetsMake(0, 9.0, 0, 9.0)]; 
[[UINavigationBar appearance] setBackgroundImage:navbarImage 
            forBarMetrics:UIBarMetricsDefault]; 
[[UINavigationBar appearance] setBackgroundImage:navbarLandscapeImage 
            forBarMetrics:UIBarMetricsLandscapePhone]; 

然而,在iOS5.1模擬器,當我從縱向更改方向爲橫向到縱向,所使用的圖像是導航欄,landscape.png而不是導航欄。 PNG。

下面是一些例子圖片:

人像默認: enter image description here

更改爲橫向: enter image description here

改回肖像: enter image description here

有沒有人有一個想法這裏有什麼問題?我不確定爲什麼錯誤的圖像正在使用。

回答

1

事實上,事實證明,問題是一個錯誤在模擬器中。我嘗試了上述所有解決方案,而且在問題得到解決或沒有解決時,沒有任何區別。

0

你在哪裏設置?您可以嘗試將其添加到 - (void)viewWillLayoutSubviews。

+0

我在我的appDelegate中的應用程序中運行此代碼:didFinishLaunchingWithOptions方法。 – linusthe3rd 2013-04-23 00:40:51

-1

在人像模式:UINavigationBar的高度= 44

在橫向模式:UINavigationBar的高度= 32

如果你想他們是一樣的,你需要考慮它們的高度考慮進去。例如:

- (void)viewWillAppear:(BOOL)animated { 
    CGRect navframe = [[self.navigationController navigationBar] frame]; 
    navframe.size.height = 44.0f; 
    [self.navigationController navigationBar].frame = navframe; 
} 
+1

像這樣的硬編碼大小是一個很大的禁忌。 – 2013-04-22 12:40:19

0

你可以只給一個圖像無論是景觀和potrait不需要具有兩個不同 兩個不同的圖像 而不是給UIEdgeinset這樣

UIImage *navbarImage = [[UIImage imageNamed:@"navbar"] 
         resizableImageWithCapInsets:UIEdgeInsetsMake(0, 9.0, 0, 9.0)]; 

你可以指定頂和底部插入,以便它將調整高度明智

UIImage *navbarImage = [[UIImage imageNamed:@"navbar"] 
         resizableImageWithCapInsets:UIEdgeInsetsMake(some value according the image u have, 9.0, some value according the image u have, 9.0)]; 
相關問題