2017-10-04 11 views
0

을 나는 화면을 크기에 관한스크린 샷을 걸릴 수 없습니다 - 화면 크기를 반환 이미지 문제

let screen = CGRect(x: 0, y: 0, width: sceneView.frame.size.width, height: sceneView.frame.size.height - 60) 


을 캡처 찾고 SceneView 메신저의 크기를 동일, I는 "호출 할 수 없습니다 초기화를위한 인사 장을 보내 게하고 나는이 오류를 수정 가겠어요 어떻게 유형의 인수 목록 (CGRect).와 CGFloat을 입력?

func Screenshot() 
{ 
     UIGraphicsBeginImageContextWithOptions(UIScreen.main.bounds.size, false, CGFloat(screen)) 
     view.layer.render(in: UIGraphicsGetCurrentContext()!) 
     let image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 
     UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil) 
} 
+0

맞춤 경계를 만들려면 CGSize를 사용하십시오. – jonpeter

답변

1

을 당신이 잘못 매개 변수는 UIGraphicsBeginImageContextWithOptions에 인수를 입력 통과했다. 마지막 인수 유형 CGFloat의, 즉 받아 float 값이지만 CGRect (화면) 유형의 값을 전달했습니다.

UIGraphicsBeginImageContextWithOptions 가지고 다음 매개 인자

void UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale) 


파라미터

크기
새로운 맵의 문맥 (점 측정) 크기. 이것은 UIGraphicsGetImageFromCurrentImageContext 함수에 의해 반환 된 이미지의 크기를 나타냅니다. 비트 맵의 ​​크기를 픽셀 단위로 가져 오려면 width 및 height 값에 scale 매개 변수의 값을 곱해야합니다.

불투명도
비트 맵이 불투명한지 여부를 나타내는 부울 플래그. 비트 맵이 완전히 불투명 한 경우, 예를 지정하여 알파 채널을 무시하고 비트 맵의 ​​저장 공간을 최적화하십시오. NO를 지정하면 부분적으로 투명한 픽셀을 처리하기 위해 비트 맵에 알파 채널이 포함되어야합니다.

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

여기서이 함수 애플 문헌 : UIGraphicsBeginImageContextWithOptions

솔루션 (힌트) 패스 값 0.0 1.0 대신 스크린과 참조.

UIGraphicsBeginImageContextWithOptions(UIScreen.main.bounds.size, false, CGFloat(1.0)) 
+0

다시 한번 감사드립니다, 크루 날. CGSize를 사용하면 CGSize를 사용할 수 있습니다. screen = CGSize (width : UIScreen.main.bounds.width, height : UIScreen.main.bounds.height - 60) – jonpeter