3

私は愛好家の iOS 開発者です (実際にはかなりの初心者です)。現在、iPhone アプリを作成しており、480、960、および 1136 の解像度で動作するユニバーサル背景画像を定義しようとしています。

私の考えは、画像ビューを画像とともに背景に配置することです。その上にある他のすべてのビューは、背景として clearColor を使用します。したがって、背景画像は常に表示されます。問題は、画像が歪められないことです。そのため、実際には、さまざまな画面サイズに表示する 3 つの異なる画像があります。

問題は、このコンセプトを機能させる方法がよくわからないことです。インターネットで答えを探してみましたが、役に立たなかったので、もっと良い方法があるのではないかと思いました。

誰かが私に上記のアイデアを始めさせたり、同じことをより効率的に達成する方法を教えてもらえますか?

4

3 に答える 3

4

さて、私はそれを解決したと信じています(以下のコメント投稿者の助けを借りて:)。これがうまくいくように見える私のコードです(それは最善の解決策ではないかもしれませんが、それで、あなたがより良い方法を持っているなら私に知らせてください):

UIImage *backgroundImage = [[UIImage alloc] init];
if ([UIScreen mainScreen].bounds.size.height > 480.0f) {
    backgroundImage = [UIImage imageNamed:@"background-568h.png"];
    }
else {
    backgroundImage = [UIImage imageNamed:@"background.png"];
    }

 self.window.backgroundColor = [UIColor colorWithPatternImage:backgroundImage];

重要なことの1つは、現在4インチの非網膜ディスプレイを使用しているデバイスはありませんが、コード内の画像を参照するときに非網膜バージョンを使用してから、小さい画像の網膜バージョンを含める必要があります。したがって、コードで参照されるbackground-568h.pngのbackground-568h@2x.pngが必要です。意味がありませんが、それが機能する方法です...:P

于 2012-11-17T15:59:30.123 に答える
1

480px の場合 - ImageName.png

960px の場合 - ImageName@2x.png (Retina ディスプレイ用の画像として自動的に取得されます)。

1136pxについてはこちらのリンクをご参照ください。

于 2012-11-17T12:21:33.183 に答える
1

解像度ごとに個別の画像を提供することはかなり一般的であり、推奨されます。しかし、あなたの考えは非常に理解できます。あなたのグラフィックは、さまざまなデバイスのさまざまなアスペクト比すべてにうまく収まると思います。もしそうなら、使用したい最大の解像度で画像(私が推測するpng)を作成するだけです。この画像を、背景に使用している UIImageView オブジェクトに割り当てます。IB または UIViewContentModeScaleToFill プログラムで、コンテンツ モードを "Scale to fill" に設定します。

于 2012-11-17T13:00:51.957 に答える