簡體   English   中英

當方向從橫向更改為縱向時,UInavigationbar背景圖像無法正確調整大小

[英]UInavigationbar background image does not resize correctly when orientation changes from landscape to portrait

我正在嘗試將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模擬器中,當我將方向從縱向更改為橫向更改為縱向時,使用的圖像是navbar-landscape.png而不是navbar.png。

以下是一些示例圖片:

縱向默認: 在此處輸入圖片說明

更改為景觀: 在此處輸入圖片說明

改回縱向: 在此處輸入圖片說明

有誰知道這里的問題是什么? 我不確定為什么使用了錯誤的圖像。

實際上,事實證明問題出在模擬器中。 我嘗試了上述所有解決方案,但對於何時解決問題都沒有任何幫助。

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

您可以只提供一張用於風景和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)];

在縱向模式下:UINavigationBar Height = 44。

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

如果希望它們相同,則需要考慮它們的高度。 例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM