アプリのボタンのサイズを、幅と高さのピクセル数に適切に変換したいと思っています。
つまり、幅が50、高さが100であるとしましょう。網膜ディスプレイデバイスでは、幅100、高さ200を返します。網膜以外のデバイスでは、幅50、高さ200を返す必要があります。 100の高さ。
そしてそれはiPadでも同じように機能するはずです。とにかく、どうすればいいですか?UIScreenのmainScreenスケールを使用しますか、それとも別の方法がありますか?
ありがとう!
アプリのボタンのサイズを、幅と高さのピクセル数に適切に変換したいと思っています。
つまり、幅が50、高さが100であるとしましょう。網膜ディスプレイデバイスでは、幅100、高さ200を返します。網膜以外のデバイスでは、幅50、高さ200を返す必要があります。 100の高さ。
そしてそれはiPadでも同じように機能するはずです。とにかく、どうすればいいですか?UIScreenのmainScreenスケールを使用しますか、それとも別の方法がありますか?
ありがとう!
画面に表示するものはすべて、ピクセルではなくポイントで測定されます。非網膜iPhoneは320x480ポイントです。網膜-iPhone(3.5 ")は320x480ポイントです。
これはすべてのデバイスに当てはまります。ピクセルについて心配する必要はありません。ポイントについて心配する必要があります。
ボタンは、すべてのデバイスで100x50として測定されます。
アップデート:
画像を操作するときは、2セットの画像を作成する必要があります。
2つのイメージを提供することにより、OSは適切なイメージを取得します。あなたのコードはまだすべてをポイントで測定します。したがって、200x100の網膜画像は網膜デバイス上で100x50ポイントとして表示されます。
実行時に1セットのサイズを変更するのではなく、通常2セットのアセットを出荷する必要があるという点で、前の回答に同意しますが、それでも可能です。
UIImageを画面の正しいスケールにスケーリングすることは、実際にはUIScreenのscaleプロパティを使用することを意味します。ただし、将来的には、を使用しない方が理にかなっている可能性があります[UIScreen mainScreen]
が、代わりに、画像が表示されるビューを決定し、そこから画面を取得します。
全体として、別のイメージを作成し、OSに独自のスケーリングを処理させることをいじらないほうがおそらく理にかなっています。アセットが@2xであることがわかっている場合は+ (UIImage *)imageWithData:(NSData *)data scale:(CGFloat)scale
、オブジェクトを作成してそこでスケールを定義するために使用できます。これにより、システムはスケールを認識し、@1x画面に表示されている場合でもサイズ変更を適切に処理します。