0

私の iPhone アプリでは、iPhone 5 であるかどうかに応じて、特定の背景画像を設定したいだけです。

そこで、私は 2 つのアプローチを試みました。

self.view.backgroundColor = [UIColor colorWithPatternImage:backGroundimage];

B) UIImageView を作成し、そこに画像を設定します。コード:

UIImageView *backgroundImageView = [[UIImageView alloc]initWithFrame:screenBounds];
[backgroundImageView setImage:[UIImage imageNamed:backGroundImage]];
[self.view addSubview:backgroundImageView];

しかし、私はそれらの両方に問題があります:

ステップ A の問題: この方法で画像を設定すると、さまざまなサイズの画面の画像スケーリングの問題に対処する必要があります。次のコードを使用してスケーリングを行います。

UIGraphicsBeginImageContext(screenBounds.size);
[[UIImage imageNamed:backGroundImage] drawInRect:screenBounds];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext(); 

self.view.backgroundColor = [UIColor colorWithPatternImage:image];

ステップ A のもう 1 つの問題は、画像がかなりぼやけて見えることです。同じ鋭さはありません。

ステップ B の問題点: これにより、イメージは非常にくっきりとシャープに見えます。

しかし、次のコードを使用して別のビューに切り替えると、奇妙なことに、UIImageView backgroundImageView がまだ 2 番目のビューに表示されます。ビューを切り替えるために使用するコードは次のとおりです。

[self presentViewController:secondViewController animated:YES completion:nil];

も試し[backgroundImageView removeFromSuperview]ましたが、それでも何も解決しません。

それで、私は何を間違っていますか?また、iPhone のサイズに依存する画像を背景として設定するにはどうすればよいですか?

4

2 に答える 2

0

プランBは良いプランです。別のビューコントローラを提示すると、画像ビューが確実に非表示になります。それが発生していない場合は、現在のVCの背景画像とは関係のないsecondViewControllerの作成に問題があります。

secondViewControllerを提示する前に、ログに記録します。

NSLog(@"presenting %@", secondViewController);

私はそれがゼロであることを1ドル賭けます。私が正しければ、secondViewControllerを初期化する方法を見てみましょう。これが問題であり、背景画像の表示とは関係ありません。

于 2012-11-11T05:25:33.953 に答える
0

さて、この問題の原因はまだわかりませんが、ようやくこの問題を修正しました。

これを修正するには、UIImageView の IBOutlet プロパティを作成し、XIB ファイルに接続する必要がありました。

UIImageView をプログラムで作成した理由は、UIImageView のサイズが使用している iPhone のサイズに依存するためです。しかし、IBOutlet (UIImageViewOutlet と呼びましょう。[self.UIImageViewOutlet setFrame:] を使用して、必要なサイズと位置を取得しました。

また、プログラムで作成していたボタンの 1 つが、まだ secondViewController に表示されていることも発見しました。そのための XIB ファイルにもアウトレットを作成し、setFrame を使用して適切に配置しました。

この問題の理由を知っている人がいれば、とても感謝しています。

于 2012-11-11T13:12:11.660 に答える