16

UIImagedrawInRect:方法で画像を描画しようとしています。コードは次のとおりです。

UIImage *image = [UIImage imageNamed:@"OrangeBadge.png"];

UIGraphicsBeginImageContext(image.size);

[image drawInRect:CGRectMake(0, 0, image.size.width, image.size.height)];

UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

問題は、結果の画像がぼやけていることです。ソース画像(左側)と比較した結果の画像(右側)は次のとおりです。

ソース画像とぼやけた画像

私は両方を試しましCGContextSetAllowsAntialiasing(UIGraphicsGetCurrentContext(), NO) CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), NO)たが、これでは問題は解決しませんでした。

何か案は?

前もって感謝します。

4

1 に答える 1

30

Retinaデバイスで開発している場合、問題はグラフィックスコンテキストの解像度に関連している可能性があります。試してみませんか:

UIGraphicsBeginImageContextWithOptions(size, NO, 2.0f);

これにより、網膜の解像度が有効になります。また、これが機能するには、画像が@2xの解像度で利用可能である必要があります。

非網膜デバイスもサポートしたい場合は、以下を使用できます。

if ([UIScreen instancesRespondToSelector:@selector(scale)]) {
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0f);
} else {
    UIGraphicsBeginImageContext(newSize);
}
于 2012-09-14T15:28:41.123 に答える