Skip to content

Instantly share code, notes, and snippets.

@yutailang0119
Last active January 6, 2020 16:44
Show Gist options
  • Save yutailang0119/b3d8114bd18d8b1404e58edaabf85cc8 to your computer and use it in GitHub Desktop.
Save yutailang0119/b3d8114bd18d8b1404e58edaabf85cc8 to your computer and use it in GitHub Desktop.
Debugging View for SwiftUI
import SwiftUI
import PlaygroundSupport
public struct DebuggerView<Body: View>: View {
private let _body: Body
private let color: Color
public init(body: Body, color: Color? = nil) {
self._body = body
self.color = color ?? Color.random
}
public var body: some View {
ZStack.init(alignment: .topLeading) {
self._body
.layoutPriority(1.0)
self.bodyTypeLabel
}
.border(color)
}
private var bodyTypeLabel: some View {
Text(String(describing: type(of: _body)))
.lineLimit(1)
.font(.system(size: 10.0))
.foregroundColor(.primary)
.background(color.opacity(0.7))
}
}
private extension SwiftUI.Color {
static var random: Self {
[
.blue,
.green,
.orange,
.pink,
.purple,
.red,
.yellow,
]
.randomElement()!
}
}
struct ContentView: View {
var body: some View {
HelloWorldView()
}
}
struct HelloWorldView: View {
var body: some View {
VStack {
HelloView()
WorldView()
}
}
}
struct HelloView: View {
var body: some View {
Text("Hello")
}
}
struct WorldView: View {
var body: some View {
Text("World")
}
}
let contentView = ContentView()
let debuggerView = DebuggerView(body: contentView)
let host = UIHostingController(rootView: debuggerView)
PlaygroundPage.current.liveView = host
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment