私はUIView
スナップショットを取るか、UIGraphicsImageRenderer
(下に表示)を使用するか、それを作成することができますiOSの10でUIImage
を作成して保存します。私は最後から二番目の文を含めることによって、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;
}
しかし、Xcodeは、次のエラーレポートとデバッグに入る
(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