整个代码块包含以下内容:
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 @finally没有任何结果。我在AppDelegate.h中导入了Quartzcore,如果它与它有任何关系。该应用程序在模拟器中运行良好,但在真实设备上运行时崩溃。
答案 0 :(得分:3)
@Greg:在设备上看起来像是内存溢出问题,因为设备是内存受限的,而模拟器运行时使用不同的内存配置,我遇到了同样的问题 - 这可能发生在长网页上,任何想法如何解决? / p>
在崩溃之前,任何人的最大宽度和高度[CALayer renderInContext]可以处理实际设备(iphone视网膜或非视网膜)吗?
答案 1 :(得分:0)
尝试
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();