2014-07-11 3 views
2

iOS 기기에서 현재 표시된 화면을 특정 앱에 저장하려고하는데 제대로 작동합니다. UIImageView를 가로 방향으로 저장하려고하면 바로 문제가 발생합니다. 나는이 응용 프로그램에 대한 자동 레이아웃을 사용하고iOS : renderInContext 및 가로 방향 문제

enter image description here

, 그리고 아이폰과 아이 패드 모두에서 실행

내 문제를 설명하는 다음 그림을 참조하십시오. ImageView가 세로 모드로 표시된 것처럼 항상 저장되어있는 것처럼 보입니다. 지금 당장 조금 갇혀 있습니다.

CGSize frameSize = self.view.frame.size; 

if (UIInterfaceOrientationIsLandscape(self.interfaceOrientation)) { 
    frameSize = CGSizeMake(self.view.frame.size.height, self.view.frame.size.width); 
} 

UIGraphicsBeginImageContextWithOptions(frameSize, NO, 0.0); 

CGContextRef ctx = UIGraphicsGetCurrentContext(); 
CGFloat scale = CGRectGetWidth(self.view.frame)/CGRectGetWidth(self.view.bounds); 
CGContextScaleCTM(ctx, scale, scale); 

[self.view.layer renderInContext:ctx]; 

[self.delegate photoSaved:UIGraphicsGetImageFromCurrentImageContext()]; 

UIGraphicsEndImageContext(); 

당신의 도움을 기대 :

내가 사용하는 코드입니다!

+0

결과가 정확히 무엇이며 예상되는 결과는 무엇입니까? 풍경의 너비와 높이를 바꿔서 회전을해야 할 수도 있지만 스크린 샷을 세로로 만듭니다. –

+0

@MaticOblak 문제는 현재 인터페이스 방향에 관계없이 세로 모드의 컨텍스트에서 이미지를 저장하는 것처럼 보입니다. 위 사진을 보면 세로 모드로 컨텍스트를 저장할 때 모든 것이 정상입니다. 그러나 가로 모드에서 컨텍스트를 저장할 때 이미지는 물론 가로 모드로 표시되지만 컨텍스트의 크기에 관계없이 세로 모드로 표시 될 때 이미지가 항상 저장됩니다. 회전은이 시점에서 아무 것도 바뀌지 않습니다. – chritaso

답변

0

아직 정확한 이슈가 무엇인지 모르겠지만 스크린 샷 코드를 사용하면 조금 이상한 이미지 (회전하지 않거나 너무 작음)가 발생합니다. 대신이 코드를 사용해주세요. CGImage하지 않는 상태에서 UIImageUIImageCGImage 사이에 큰 차이가 이해해야 다음 다른

+ (UIImage *)imageFromView:(UIView *)view { 
    UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, .0f); 
    [view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return img; 
} 

는 방향을 포함하고 있습니다. 이미지 변환을 처리 할 때는 일반적으로 CGImage이고 너비 또는 높이를 가져 오면 방향이 삭제됩니다. 즉 방향이 바뀌지 않을 때 CGImage은 뒤집힌 치수를 나타냅니다 (UIImageOrientationUp). 그러나 일반적으로 이러한 이미지를 처리 ​​할 때는 컨텍스트에서 CGImage을 만든 다음 [UIImage imageWithCGImage:ref scale:1.0f orientation:originalOrientation]을 사용하십시오. 이미지의 방향을 명시 적으로 회전 (UIImageOrientationUp)하려는 경우에만 이미지를 회전 및 변환하여 컨텍스트에 그려야합니다.

어쨌든,이 오리엔테이션 문제는 지금까지 상당히 수정되었습니다. UIImagePNGRepresentation은 오리엔테이션을 준수하고 올바르게 기억하면 이전에 누락 된 적이있는 CGImage의 이미지 생성자를 이미 가지고 있습니다.