View+Snapshot.swift 535 B

12345678910111213141516171819
  1. import SwiftUI
  2. extension View {
  3. func snapshot() -> UIImage {
  4. let controller = UIHostingController(rootView: self)
  5. let view = controller.view
  6. let targetSize = controller.view.intrinsicContentSize
  7. view?.bounds = CGRect(origin: .zero, size: targetSize)
  8. view?.backgroundColor = .clear
  9. let renderer = UIGraphicsImageRenderer(size: targetSize)
  10. return renderer.image { _ in
  11. view?.drawHierarchy(in: controller.view.bounds, afterScreenUpdates: true)
  12. }
  13. }
  14. }