整个代码块由以下部分组成:
CGSize layerSize = [webview sizeThatFits:CGSizeZero];
if ([UIScreen instancesRespondToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0f) {
UIGraphicsBeginImageContextWithOptions(layerSize, NO, 2.0f);
}
else {
UIGraphicsBeginImageContext(layerSize);
}
[webview.layer renderInContext:UIGraphicsGetCurrentContext()];
screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
但经过测试,这条线路就是造成问题的原因:
[webview.layer renderInContext:UIGraphicsGetCurrentContext()];
该应用程序在控制台中没有列出任何原因的情况下崩溃,使用@try@catch@最终一无所获。我在AppDelegate.h中导入了Quartzcore,如果这与它有关的话。该应用程序在模拟器中运行良好,但在真实设备上运行时会崩溃。
@Greg:这似乎是设备上的内存溢出问题,因为当模拟器使用不同的内存配置运行时,设备受到内存限制,我遇到了同样的问题-这可能发生在长网页上,有什么办法解决吗?
在崩溃之前,有人能在实际设备(iphone视网膜或非视网膜)上处理最大宽度和高度[CLAYER renderInContext]吗?
尝试
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();