iPad 3的屏幕截图很慢

时间:2012-04-04 07:13:26

标签: objective-c ios ipad screenshot retina-display

在我的应用中,我使用的是截图方法。在我的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;

}

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

我认为是Flipboard的开发者在播客上谈论这个问题。这是iPad 3的一个真正问题,因为它们的像素增加了四倍。

他正在做的是在后台提前截取屏幕截图,而不是在用户发起操作时 - 在用户“翻转”页面的情况下。

我不知道这对你的情况是否有帮助,但对于很多情况来说这肯定是一种可行的方法。

答案 1 :(得分:0)

这可能适用于您的应用,也可能不适用,但一种选择是缩小屏幕截图,例如:将0.5作为比例因子传递给 UIGraphicsBeginImageContextWithOptions 。快4倍,但权衡是细节/分辨率的损失。