Skip to content

Instantly share code, notes, and snippets.

@alexbbrown
Forked from erica/playgroundRender.swift
Last active June 21, 2019 21:37
Show Gist options
  • Save alexbbrown/1d8ad4b1db5a1b7ef126834c5d15e579 to your computer and use it in GitHub Desktop.
Save alexbbrown/1d8ad4b1db5a1b7ef126834c5d15e579 to your computer and use it in GitHub Desktop.
import PlaygroundSupport
import SwiftUI
extension UIView {
var renderedImage: UIImage {
let image = UIGraphicsImageRenderer(size: self.bounds.size).image { context in
UIColor.lightGray.set(); UIRectFill(bounds)
context.cgContext.setAlpha(0.75)
self.layer.render(in: context.cgContext)
}
return image
}
}
extension View {
var renderedImage: UIImage {
let window = UIWindow(frame: CGRect(origin: .zero, size: CGSize(width: 320, height: 160)))
let hosting = UIHostingController(rootView: self)
hosting.view.frame = window.frame
window.rootViewController = hosting
window.makeKey()
return hosting.view.renderedImage
}
}
Text("Hello").renderedImage
Slider(value: .constant(0.5)).renderedImage
let view = ([Color.red, .orange, .yellow, .green, .blue, .purple]
.reduce(AnyView(Text("👭").font(.largeTitle)
.rotationEffect(Angle(radians: .pi)))) {
AnyView($0.padding()
.background($1)
.rotationEffect(Angle(radians: .pi / 6)))
})
PlaygroundPage.current.liveView = UIHostingController(rootView: view)
@alexbbrown
Copy link
Author

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment