2

iOS 5のappearanceメソッドを使用して背景画像を使用しようとしています。次のステートメントを使用して、背景画像を設定しています。

UIImage *portraitImage = [UIImage imageNamed:@"test_bar_portrait.png"];
UIImage *landscapeImage = [UIImage imageNamed:@"test_bar_landscape.png"];
[[UINavigationBar appearance] setBackgroundImage:portraitImage forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:landscapeImage forBarMetrics:UIBarMetricsLandscapePhone];

アプリを実行すると、正しい画像が縦向きと横向きで表示されますが、回転して縦向きに戻すと、横向きの画像が表示されたままになります。

ここでサンプルテストアプリケーションを作成しました:http: //dl.dropbox.com/u/7834263/Appearance%20Test.zip

そして、何が起こっているかのスクリーンショット:

通常のポートレート

通常の風景

間違った肖像画

4

2 に答える 2

6

私はあなたのコードを次のように変更しようとしました、そしてそれは私にとってうまくいきました。

UIImage *portraitImage = [UIImage imageNamed:@"test_bar_portrait.png"];
UIImage *landscapeImage = [UIImage imageNamed:@"test_bar_landscape.png"];
[[UINavigationBar appearance] setBackgroundImage:portraitImage forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setBackgroundImage:landscapeImage forBarMetrics:UIBarMetricsLandscapePhone];

self.navigationController.navigationBar.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;

チェックアウトしてください。

于 2012-04-30T13:33:24.830 に答える
0

Swift 2.0:

let portraitImage: UIImage = UIImage(named: "Navbar.portrait.png")!
let landscapeImage: UIImage = UIImage(named: "Navbar.landscape.png")!
UINavigationBar.appearance().setBackgroundImage(portraitImage, forBarMetrics: .Default)
UINavigationBar.appearance().setBackgroundImage(landscapeImage, forBarMetrics: .CompactPrompt)
self.navigationController!.navigationBar.autoresizingMask = .FlexibleTopMargin
于 2016-02-11T08:10:25.120 に答える