2012-03-14 3 views
4

전체 코드 블록은 다음과 같이 구성 UIGraphicsGetCurrentContext을()];최대 크기

은 메모리 충돌로 보입니다.이 기능이 작동하지 않는 장치 (ipod, iphone, ipad)를 기반으로 한 최대 크기 (너비 x 높이)가 있습니까? 망막 디스플레이의 매우 긴 페이지에서 충돌하는 것 같습니다.

답변

0

메모리 issuse가 문제의 원인이라고 생각하지 않습니다. void UIGraphicsBeginImageContextWithOptions(CGSize size,BOOL opaque,CGFloat scale);으로 스크린 샷을 찍어야합니다. 마지막 매개 변수는 0.0으로 설정되어 망막/비 망막 문제를 해결합니다.

"비트 맵에 적용 할 배율입니다. 값을 0.0으로 지정하면 배율 인수는 장치의 주 화면 배율 인수로 설정됩니다." documentation에서.

UIGraphicsBeginImageContextWithOptions(webview.bounds.size, YES, 0.0); 
[webview.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

편집 : 앱은 여전히 ​​충돌하고 있다고.

QuartzCore framework을 추가하는 것을 잊었을 수 있습니까?

당신은 또한 QuartzCore header를 가져올 수 있습니다 Technical Q&A QA1703 (Screen Capture in UIKit Applications)

에서

#import <QuartzCore/QuartzCore.h> 

+0

나는 당신의 제안을 시도했지만 UIGraphicsBeginImageContextWithOptions (webview.bounds.size, YES, 0.0), 여전히 충돌합니다. 인스 트루먼 트의 메모리 모니터는 메모리 오류로 표시하고 앱을 닫습니다. 따라서 이것은 분명히 메모리 문제입니다. – akishnani

+0

@akishnani : 내 편집 된 답변보기 : 그 이유가 될 수 있습니까? 또한 링크 된 Q & A –

+0

주사위 - 아직도 충돌, 나는 헤더 및 프레임 워크를 포함 시켰습니다. – akishnani

0
저도 같은 문제를 가지고

안녕 akishnani, 고통 및 모든 인터넷 검색 한 후 난 그냥 무시 것을 발견 - (void)drawRect:(CGRect)rect 방법을, 그리고 그것은 문제를 만들어 내고 있었고 아직 해결되지 않았다면 문제를 해결할 수 있습니다.

-(void)drawRect:(CGRect)rect 
{ [super drawRect:rect]; 
} 
0

꽤 오래된 스레드이지만 발견 된 것은 스크린 샷의 높이를 제한하는 것입니다.

내가 상한선 (4000CGFloat)을 지정했고, 그 이상의 스크린 샷을 찍어야하는 콘텐츠를 상한선으로 자르면됩니다.

이렇게하면 메모리 오류의 재발을 줄일 수 있습니다.