2

遅すぎるUIViewのスクリーンショット(UIImage)を撮るには、次の方法があります

+ (UIImage *)imageWithView:(UIView *)view
{
  CGSize size = view.bounds.size;

  UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
  CGContextRef context = UIGraphicsGetCurrentContext();

  [view.layer renderInContext:context];
  UIImage * image = UIGraphicsGetImageFromCurrentImageContext();

  UIGraphicsEndImageContext()

  return image;
}

私のiPadには、ドラッグ&ドロップされたビューのコピーを作成するためにこのメソッドを必要とするアプリがあります。このビューは角が丸いため、不透明ではありません ( isOpaque パラメータを YES に設定しても違いはありません)... また、スクリーンショットされたビューには、かなり複雑なエントリを持つ UITableView が含まれていますそれ...

スクリーンショットの速度を改善する方法について何か提案はありますか? 現在、少し大きいテーブルビュー (おそらく 20 エントリ) の場合、約 1 秒かかります (!!!) ビューは既に画面上にあり、正しくレンダリングされています...したがって、ピクセルを UIImageView に入れるだけで済みます...

iOS 6 以降をサポートする必要があります。

4

1 に答える 1

2

この同じコードを使用して、非常に複雑なビューのスクリーンショットを撮ります。あなたのボトルネックは、ドラッグ&ドロップに大きな画像を使用していると思います。たぶん、UIImage のサイズを変更できます。

私の場合、iPad2 でのパフォーマンスは、スクリーンショットで約 100 ミリ秒です。

于 2013-08-02T12:08:19.250 に答える