2012-03-14 4 views
2

모든 뷰와 레이어가 병합 된 화면 일부의 스크린 샷을 저장하려고합니다. 이 작업을 수행하는 방법을 알고있는 유일한 방법은 아래 코드를 사용하는 것입니다.앱 창의 일부 스크린 샷을 찍는 방법은 무엇입니까?

아래 코드는 80x80 정사각형을 생성하지만 왼쪽 상단 구석이 0,0입니다.

어떻게 전체 페이지 스크린 샷에서 작은 사각형을자를 수 있습니까? 예를 들어 320x480 전체 창 스크린 샷이 있지만 160,240을 중심으로 한 80x80 사각형 만 필요합니까?

UIGraphicsBeginImageContext(smallView.frame.size); 
[appDelegate.window.layer renderInContext:UIGraphicsGetCurrentContext()]; 

UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

고맙습니다!

+0

은 아마 당신은 이미지의 마스크를 추가 한 다음 마스크되지 않은 지역에서 컨텍스트를 얻을 수 있습니다 사용하여 필요한 부분을 잘라 점점 후? – tams

답변

9

스크린 샷 이미지는이

CGImageRef imageRef = CGImageCreateWithImageInRect([screenshot CGImage], cropRect); 
UIImage *result = [UIImage imageWithCGImage:imageRef]; 
CGImageRelease(imageRef); 
3

테스트되지 않은 제안 ...

UIGraphicsBeginImageContext(smallView.frame.size); 
    [appDelegate.window.layer renderInContext:UIGraphicsGetCurrentContext()]; 

    CGRect cropRect = UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
    CGRectMake(160.0,240.0,smallView.frame.size.width,smallView.frame.size.height); 
    CGImageRef croppedImageRef = CGImageCreateWithImageInRect(screenshot.CGImage,cropRect); 
    UIImage *croppedScreenshot = [UIImage imageWithCGImage:croppedImageRef]; 
    CGImageRelease(croppedImageRef); 
    UIGraphicsEndImageContext(); 
관련 문제