2

この種のコードを使用して、プログラムで作成されたUIImageイメージがあります。

UIGraphicsBeginImageContextWithOptions(CGSizeMake(128, 128), NO, 0.0f);
// Render in context
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

私のコンテキストオプションはスケール0を指定しているので、網膜デバイスでは2に設定され、結果のUIImageスケールプロパティでそれを確認できます。

ここで問題となるのは、この画像サイズが128x128、スケール2であるということです。サイズ64x64、contentMode = CenterのUIImageViewに配置すると、画像がimageviewの外にレンダリングされ、おそらくスケーリングなしで128x128ボックスにレンダリングされます。

網膜グラフィックスについての私の理解は、画像のスケール係数が2.0の場合、1/2サイズでレンダリングする必要があるため、DPIが高くなるというものでした。そのため、画像ビューで64x64の画像が網膜品質でレンダリングされることを期待していました。私はどこが間違っていますか?

4

1 に答える 1

0

画像は、指定したサイズ(128 x 128)でレンダリングされます。倍率は、より適切にレンダリングされた曲線などがあることを意味しますが、画像は128x128ポイントのままです。ドキュメントに記載されているように、サイズパラメータは次のとおりです。

新しいビットマップコンテキストのサイズ(ポイントで測定)。これは、UIGraphicsGetImageFromCurrentImageContext関数によって返される画像のサイズを表します。

網膜品質の64x64画像が必要な場合は、コンテキストに64x64サイズを使用してください。

于 2012-08-23T19:55:17.227 に答える