0

「flipImage.png」と「flipImage@2x.png」の両方のファイルプロジェクトにあります。-[FlipsideViewController viewDidLoad] には、次のコードがあります。健全性チェック (他のスタックオーバーフラワーのおかげ) は、網膜の有無を正しく報告します。ただし、どちらの場合も、読み込まれた画像は小さいものであり、その高さによって確認されます。適切な画像が自動ロードされないのはなぜですか? OK、回避策はありますが、可能であればシステムを使用したいと思います。

UIImage* flipimage = [UIImage imageNamed:@"flipImage.png"];
NSLog(@"Image height = %f", flipimage.size.height);  // always 416, never 832 :(

// Sanity check.
if ([[UIScreen mainScreen] respondsToSelector:@selector(displayLinkWithTarget:selector:)] &&
([UIScreen mainScreen].scale == 2.0)) {
    NSLog(@"Retina");
} else {
    NSLog(@"Non-retina");
}   
4

2 に答える 2

1

iOS Retina ディスプレイはそのようには機能しません。@2x 画像と標準解像度の画像の高さは、デバイスとコードで同じになります。画面上に 416 ポイント x 416 ポイントの画像を作成すると、Retina ディスプレイと非 Retina ディスプレイ上にあるという理由だけで、高さは変わりません。

違いは、@2x 画像は解像度が高いため、1ポイントあたりのピクセルが多く表示されることです。これは、Retina ディスプレイがピクセルの代わりに使用しているものです。

基本的に、アプリ内で使用する画像に標準解像度のファイル名を使用するだけで、Retina ディスプレイ上にある場合は、OS が自動的に高解像度の画像に置き換えます。

于 2013-04-29T23:20:42.647 に答える
0

以前のコメントによると...そしてコードを大幅に変更する必要がないので、これを実行してみませんか:

UIImage* flipimage = [UIImage imageNamed:@"flipImage.png"];
NSLog(@"Image height = %f", flipimage.size.height * [UIScreen mainScreen].scale);

サイズ (ポイント数 * ポイントあたりのピクセル数) が返されます。

于 2013-05-08T09:56:34.440 に答える