SwiftUI の UIView を画像にして保存するサンプル

SwiftUI で UIView の内容を画像(UIImage)にして、アルバムに保存するサンプルを作った。

SwiftUI は現在の View を直接 UIView として扱うことは難しいので UIApplication 経由で UIView を取得する感じになる。

extension UIView {
    
    func image() -> UIImage {
        let renderer = UIGraphicsImageRenderer(bounds: self.bounds)
        
        return renderer.image { rendererContext in
            layer.render(in: rendererContext.cgContext)
        }
    }
    
}

extension UIApplication {
    
    static func image() -> UIImage? {
        guard let rootViewController = shared.windows[0].rootViewController else {
            return nil
        }
        
        guard let view = rootViewController.view else {
            return nil
        }
        
        return view.image()
    }
    
}