私のアプリでは、スクリーンショット方式を使用しています。私の iPad 2 では、このメソッドの実行は非常に高速 (約 130 ミリ秒) です。しかし、新しい iPad では (確かに最高の解像度と同じ CPU のため)、700 ミリ秒ほどかかります! メソッドを最適化する方法はありますか? おそらく、グラフィックカードで直接作業する方法はありますか?
これが私のスクリーンショットの方法です:
- (UIImage *)image {
CGSize imageSize = self.bounds.size;
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) UIGraphicsBeginImageContextWithOptions(imageSize, NO, [UIScreen mainScreen].scale);
else UIGraphicsBeginImageContext(imageSize);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextTranslateCTM(context, [self center].x, [self center].y);
CGContextConcatCTM(context, [self transform]);
CGContextTranslateCTM(context, -[self bounds].size.width * [[self layer] anchorPoint].x, -[self bounds].size.height * [[self layer] anchorPoint].y);
[[self layer] renderInContext:context];
CGContextRestoreGState(context);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
ご協力いただきありがとうございます。