2012-01-27 7 views
2

iOSに手動でファイルイメージファイルの2倍バージョンを読み込ませようとしています。私はリソースを節約するためにこれをやっている - 私はiPhoneのバージョンのためのグラフィックが必要で、私はiPadのバージョンの1:1のスケールでそれを使用したい。iPad上でイメージのx2バージョンの読み込みを強制的に行うと、画像がぼやけます

これを行うには、initWithContentsOfFileを使用できません。これは、x2をファイル名に追加してもiOSがx1バージョンを提供するためです。代わりに、私はこのコードを使用します:

NSString *filename = [myImage filenameWithSuffix:@"@2x"]; 
UIImage *image = [[UIImage alloc] initWithCGImage:[[UIImage imageWithData:[NSData dataWithContentsOfFile:filename]] CGImage] 
              scale:1.0 
             orientation:UIImageOrientationUp]; 

UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

それは動作します。私はそれがx2バージョンを拾っていることを100%確信しています(私は確かめるためにそのグラフィックを変更しました)。

しかし、画面に表示されているときに、正しいサイズで、それはぼやけています。実際には、x1バージョンが200%爆破されたように見えるので、iOSは自分のイメージに奇妙なことをしています。

イメージがピクセル境界で描画されていることを確認しました。

UPDATE:

私はX2の接尾辞せずに別の画像ファイルを作成し、それをロードするためにinitWithContentsOfFileを使用する場合でも、それはまだ不鮮明です。だから、これはどのようにロードされているかとは何の関係もありません。

ピクセルの位置合わせ以外に、画像の劣化の原因は何ですか?

私はスクリーンショットを撮ってPhotoshopの元のイメージと比較しています。それはまったく同じサイズなので、スケーリングは問題ではありません。

+0

スケールを指定する必要はありません。あなたは通常の名前を使用しようとしましたが、あなたのためにOSを "@ 2x"にしようとしましたか? –

+0

これはx2の面とは関係がないことが判明しました。詳細については、私のアップデートを参照してください。 – tarmes

答えて

1

私はこの問題を解決しましたが、ピクセルアライメントによるものだと言うのは恥ずかしいです。

iOSシミュレータでは、画像の位置がずれていることがわかり、画像が実際には整列していないことが判明しました。私は問題を引き起こしていたものを見つけるために、画像からのすべてのビューの位置を上に記録しました。このスニペットは、金の数倍で、その重量を証明した:

私が見てきたものを、あなたは、通常と「@ 2xの」両方のイメージを持っていることになっている、とOSは、画面の解像度に応じた画像を配置しますから、
NSLog(@"View details"); 
    UIView *view = theImageView; 
    while (view) 
    { 
     NSLog(@"%@", view); 
     view = [view superview]; 
    } 
1

これは、暗闇の中でだけでショットですが、私が使用してiPad上でうまく@ 2xのイメージをロードすることができました。2.

NSString *filename = [myImage filenameWithSuffix:@"@2x"]; 
UIImage *image = [[UIImage alloc] initWithCGImage:[[UIImage imageWithData:[NSData dataWithContentsOfFile:filename]] CGImage] 
              scale:2.0 
             orientation:UIImageOrientationUp]; 

UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 

にinitメソッドにスケールを変更してみてくださいこれ:

UIImage *image = [UIImage imageNamed:@"[email protected]"]; 
UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; 
[imageView sizeToFit]; 
[self.view addSubview:imageView]; 

(IはimageNamedを使用し、画像が.PNGあったので、それが方法で想定しているので、私は、ファイル名に.pngを追加しなかった)

+0

彼らは間違ったサイズを描くことを試みました。 – tarmes

+0

それなら、気にしないでください。 – Kevin

関連する問題