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 シミュレーターでは、向きを縦から横、縦に変更すると、使用される画像は navbar.png ではなく navbar-landscape.png になります。

画像の例を次に示します。

縦向きのデフォルト: ここに画像の説明を入力

ランドスケープに変更: ここに画像の説明を入力

ポートレートに戻す: ここに画像の説明を入力

ここで問題が何であるかを知っている人はいますか? 間違った画像が使用される理由がわかりません。

4

4 に答える 4

0

これはどこに設定していますか?-(void)viewWillLayoutSubviews に追加してみてください。

于 2013-04-22T12:30:46.143 に答える
0

このようなUIEdgeinsetを提供する代わりに、風景とポートレートの両方に1つの画像を与えるだけで、2つの異なる2つの異なる画像を持つ必要はありません

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)];
于 2013-04-22T14:03:09.357 に答える
-1

縦向きモード: UINavigationBar の高さ = 44。

横向きモード: UInavigationbar Height = 32

それらを同じにしたい場合は、それらの高さを考慮する必要があります。例えば:

- (void)viewWillAppear:(BOOL)animated {
    CGRect navframe = [[self.navigationController navigationBar] frame];
    navframe.size.height = 44.0f;
    [self.navigationController navigationBar].frame = navframe;
}
于 2013-04-22T12:30:46.253 に答える