내가 만들고 저장할 나는 UIView
스냅 샷을 찍거나 UIGraphicsImageRenderer
( 아래에 표시 )를 사용하여 하나를 만들 수 있습니다 UIImage
아이폰 OS (10)에. 나는 마지막에서 두 번째 문을 포함하여 UIImageWriteToSavedPhotosAlbum
를 사용하여 저장하려고하면iOS10 UIImageWriteToSavedPhotosAlbum는 TCC__CRASHING_DUE_TO_PRIVACY_VIOLATION
- (UIView *)createIcon
{
UIGraphicsImageRenderer *renderer = [[UIGraphicsImageRenderer alloc] initWithSize:CGSizeMake(200, 200)];
UIImage *image = [renderer imageWithActions:^(UIGraphicsImageRendererContext * _Nonnull context) {
[[UIColor darkGrayColor] setStroke];
[context strokeRect:renderer.format.bounds];
[[UIColor colorWithRed:158/255.0 green:215/255.0 blue:245/255.0 alpha:0.5] setFill];
[context fillRect:CGRectMake(30, 30, 140, 140)];
[[UIColor colorWithRed:243/255.0 green:122/255.0 blue:216/255.0 alpha:0.3] setFill];
CGContextFillEllipseInRect(context.CGContext, CGRectMake(30, 30, 120, 120));
}];
UIImageView *showImage = [[UIImageView alloc] initWithImage:image];
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
return showImage;
}
그러나, 엑스 코드는 다음과 같은 오류 보고서 디버그로 전환
(lldb) bt
* thread #5, queue = 'com.apple.root.default-qos', stop reason = signal SIGABRT
* frame #0: 0x00000001101611a6 libsystem_kernel.dylib`__abort_with_payload + 10
frame #1: 0x000000011015b86e libsystem_kernel.dylib`abort_with_payload_wrapper_internal + 89
frame #2: 0x000000011015b89b libsystem_kernel.dylib`abort_with_payload + 9
frame #3: 0x0000000108ab3af7 TCC`__CRASHING_DUE_TO_PRIVACY_VIOLATION__ + 182
frame #4: 0x0000000108ab3a41 TCC`__TCCAccessRequest_block_invoke.77 + 665
frame #5: 0x0000000108ab7273 TCC`__tccd_send_block_invoke + 274
그래서 난에 카메라를 사용하지 않은 경우에도 이미지를 사진 앨범에 저장하면 사생활 침해가됩니다 (hiss, boo)! privacy keys in the plist을 설정하는 것이 가능하다는 것을 알고 있지만 더 합리적인 대안이 있습니까?
설명 내가 응용 프로그램에 자산으로 렌더링 된 이미지 (또는 스냅 샷보기)를 사용하는 희망
. 따라서 대신 더 현명한 대안이 있습니까?
아마도 나는
이미지를 저장하는 다른 장소가
을 요청해야 (즉, PNG 또는 JPG 파일로) 그래서 개인 정보 보호가 문제가되지 않습니다?
에 이미지를 저장, 그것은 유일한 방법입니다. 'UIImageWriteToSavedPhotosAlbum'을 사용하려면이 키를 추가해야합니다. – rmaddy
나는 당신이 가야 할 가장 의미있는 접근 방식을 말했을 때 그것을 분명하게해야했습니다. 일부 액세스 (예 : 이미지 라이브러리 액세스) 코드 대신 Info.plist 업데이트 요청할 수 있지만 이미지 라이브러리에 추가하는 것이 사실인지 확신 할 수 없습니다. –
@rmaddy 및 UpholderOfTruth, 설명. 렌더링 된 이미지 (또는 스냅 샷보기)를 앱의 애셋으로 사용하겠습니다. 그래서 프라이버시 문제가 있는지 질문했습니다. – Greg