7

Webから取得する必要がある画像がいくつかあります。URLからのデータを使用するだけです。
Retina ディスプレイで正しく表示する必要があります。
Web から画像を取得すると、まだピクセル化されたように見えます。画像のスケールを Retina ディスプレイ (2.0) に設定する必要がありますが、何か不足しているに違いありません。これが私がこれまでにしたことです。

UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:@"http://www.msdomains.com/tmp/test.png"];

CGRect labelFrame = CGRectMake(0,0,64,64);
UIImageView *imageView = [[UIImageView alloc] initWithFrame:labelFrame];
imageView.contentScaleFactor = [UIScreen mainScreen].scale;

[imageView setImage:img];
[self addSubview:imageView];
[imageView release];
4

4 に答える 4

7

#@2x.pngURL の末尾に追加してみてください。URL は変更されませんが、画像は Retina @2x 画像として認識されます。それは私にとってはうまくいきましたが、この方法をSDWebImageで使用しました。

例えば使用http://www.msdomains.com/tmp/test.png#@2x.png

于 2012-07-15T12:10:39.023 に答える
3

あなたのコードはほとんどそのままで動作するはずです。画像の元のサイズはわかりませんが、64x64 ピクセルだったと思います。正しく縮小するには、元の画像が 128x128 ピクセルである必要があります。

テストとして、次のコードは私の写真をシミュレーターと iPhone 4 の Retina 解像度で正しく表示しました。

UIImage *img = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.seenobjects.org/images/mediumlarge/2006-08-19-native-lilac.jpg"]]];

CGRect labelFrame = CGRectMake(0, 0, 375, 249.5);
UIImageView *imageView = [[UIImageView alloc] initWithFrame:labelFrame];

[imageView setImage:img];
[self.view addSubview:imageView];

UIImageViewは 375x249.5 ポイントで、写真の元の (ピクセル) 寸法の半分であることに注意してください。また、 を設定するcontentScaleFactor必要はないようでした。

(余談ですが@2x、この場合、 への呼び出しはファイル名の痕跡を残さずに不透明なデータの塊を返すため、URL での指定が役立つとは思えませんdataWithContentsOfURL:。次に渡されるのはその不透明なデータです。imageWithData:画像をロードします。)

于 2012-07-15T14:09:27.960 に答える
0

画像の URL を imageView に直接割り当てると、網膜として取り込まれません。

imageView.imageURL = [NSURL URLWithString:@"http://example.com/image.png"];

網膜像は得られません。

したがって、画像が 200x200 であるにもかかわらず、imageView が 100x100 の場合、ダウンロードした画像から 100x100 が取得され、Retina デバイスでピクセル化された画像が表示されます。

解決策は、imageURL の代わりに imageView の image プロパティを使用することです。

imageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://example.com/image.png"]]];

これにより、200x200 の画像が 100x100 の imageView に割り当てられるため、画像はピクセル化されません。

于 2014-08-23T22:53:03.027 に答える
-1

Retina ディスプレイの場合は、元の画像のちょうど 2 倍の解像度の同じ画像を追加します。この画像名の最後に「@2x」を追加することを忘れないでください...たとえば"image_header.png"、画像が320x100の場合、名前"image_header@2x.png"(寸法640x200)の別の画像がOSによって自動的にRetinaディスプレイ用に選択されます...お役に立てば幸いです

于 2012-07-15T13:02:15.210 に答える