困っていること
UIGraphicsを用いて対象のUIViewと、その子要素を丸ごとUIImageに変換しているが、対象のUIViewの背景色にclearを指定している(これはstoryboardで指定)にもかかわらず、UIImageに変換しカメラロールに保存すると背景色が白色となっている。
ソースコード
Swift
1 func viewToImage(_ view: UIView) -> UIImage{ 2 3 let rect = view.bounds 4 5 UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0) 6 let context: CGContext = UIGraphicsGetCurrentContext()! 7 context.setFillColor(UIColor.clear.cgColor) 8 9 view.layer.render(in: context) 10 11 let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()! 12 13 UIGraphicsEndImageContext() 14 15 return image 16 } 17 18 // viewをimageに変換してカメラロールに保存 19 func saveImage(_ view: UIView){ 20 21 let image: UIImage = viewToImage(view) 22 23 UIImageWriteToSavedPhotosAlbum(image, self, #selector(didFinishSavingImage(_:didFinishSavingWithError:contextInfo:)), nil) 24 25 } 26 27 // 画像の保存結果を取得 28 @objc func didFinishSavingImage(_ image: UIImage, didFinishSavingWithError error: NSError!, contextInfo: UnsafeMutableRawPointer){ 29 30 var title = "保存完了" 31 var message = "カメラロールに保存しました!" 32 33 if error != nil{ 34 title = "エラー" 35 message = "カメラロールに保存できませんでした" 36 } 37 38 let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) 39 40 alertController.addAction(UIAlertAction(title:"OK", style:.default, handler: nil)) 41 self.present(alertController, animated: true, completion: nil) 42 43 44 }
プログラミング初心者なので、なんとなくでViewを画像として保存してます…
解答いただけましたら幸いです、、
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/03 01:00 編集