2

私のアプリケーションでは、次のコード ブロックを使用して、iPad mini (768 x 1024) の現在の画面のスクリーンショットを撮ります。

UIImage *img;
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;

別のビューコントローラーで、幅 540、高さ 290 の UIScrollView を提示します。プログラムで作成した initWithFrame の矩形幅 250、高さ 250 の UIImageView に、スクリーンキャプチャ UIImage を表示します。スクロールビューのコンテンツ サイズは 768 × 250 です。

アプリケーションを実行して、4 つの長方形を表示し、上記のコード ブロックを使用して画面のスクリーンショットを作成します。UIScrollView に移行すると、画像が明確ではありません (明確でないため、一部の四角形の辺が欠けていたり、一部の四角形が他の四角形より太くなっていたりします)。画像をより鮮明に表示する方法はありますか? 画像を元の 768 x 1024 から 250 x 250 に縮小する必要があることはわかっています。これが問題でしょうか? もしそうなら、最良の修正は何ですか?

編集

スクリーンシート

キャプチャしたい画像のスクリーンショットの上。

以下は、UIScrollView 内の UIImageView の UIImage です。

ここに画像の説明を入力

4

2 に答える 2

2

各座標を int にキャストするか、CGRectIntegral を使用して CGRect で直接キャストします。小数点には AA が必要で、画像がぼやけます。

于 2013-04-09T19:04:23.933 に答える
1

UIImageViewsのコンテンツ モードを変更してみてください。を使用するUIViewContentModeScaleAspectFillと、エッジの周りに余分なスペースが表示されなくなります。

更新: 投稿したスクリーンショットから、これは UIKit に組み込まれているダウンスケーリングの効果のようです。最初にCore Graphics を使用して、画像が収まるように手動で縮小してみてください。または、 CILanczosScaleTransform Core Image フィルター (iOS 6 以降)などを使用することもできます。

于 2013-04-09T17:48:10.557 に答える