I'm trying to capture a UIVIew as an image, which I can then manipulate. I have code that works in Xcode 11.7/simulator (running iOS 13.7), but throws this error :
CGImageCreate: invalid image alphaInfo: kCGImageAlphaNone. It should be kCGImageAlphaNoneSkipLast
Running on an actual device results in a crash.
Any ideas how I can create this image without the alpha or remove it after the fact?
extension UIView {
// render the view within the view's bounds, then capture it as image
func asImage() -> UIImage {
let renderer = UIGraphicsImageRenderer(bounds: bounds)
return renderer.image(actions: { rendererContext in
layer.render(in: rendererContext.cgContext)
})
}
}
It gets called from this code:
@IBAction func reactionListButtonTapped(_ sender: UIButton) {
guard let reactionVC = storyboard?.instantiateViewController(withIdentifier: "ReactionViewController")
as? ReactionViewController else {
assertionFailure("No view controller ID ReactionViewController in storyboard")
return
}
// take a snapshot of current view and set it as backingImage
reactionVC.backingImage = self.view.asImage()
self.present(reactionVC, animated: false, completion: nil)
}
Thanks for any help.