2012-03-11 42 views
6

整个代码块由以下部分组成:的CALayer renderInContext:使未知碰撞

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,如果这与它有任何关系。该应用程序在模拟器中正常工作,但在真实设备上运行时会崩溃。

+1

崩溃什么?控制台打印什么?它是EXC_BAD_ACCESS,或SIGABRT,还是一个NSExceptionThrow? – CodaFi 2012-03-11 04:09:56

+0

控制台不打印任何东西,并且Xcode中没有任何东西弹出。我只是对发生的事情感到困惑,所以我想知道我是否做错了什么。 – Greg 2012-03-11 04:27:04

+0

得到了完全相同的问题 – niklassaers 2012-06-24 10:31:10

回答

3

@Greg:似乎是设备上的内存溢出问题,因为设备内存受限,而模拟器运行不同的内存配置,我跑到相同的 - 这可能发生在长期的网页,任何想法如何解决它?

没有任何人是什么是最大的宽度和高度[CALayer renderInContext]可以处理实际设备(iPhone视网膜或非视网膜)之前,它崩溃?

+0

我也有一些问题,但这个问题只在水平模式的到来, – Sabareesh 2014-01-22 09:02:12

+0

怎么来的这是公认的答案? – 2016-10-03 11:27:27

0

尝试

[self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();