Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
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 img = ([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)))
}).renderedImage
img
@alexbbrown

This comment has been minimized.

Copy link

commented Jun 21, 2019

Well, on Catalina I can do this. I haven't tried Mojave.

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

This comment has been minimized.

Copy link

commented Jun 21, 2019

but I see you already know how to do that: https://ericasadun.com/2019/06/06/good-things-swiftui-on-mojave-in-ios-playgrounds/

But on the other hand I got to execute some swiftUI for the first time. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.