justinmkaufman/swiftuiphone
Run a SwiftUI app (or any SwiftUI view) in an iPhone Simulator "wrapper", directly on macOS!
Compatibility
SwiftUIPhone is compatible with applications targeting macOS 11+.
Installation
Swift Package Manager
SwiftUIPhone is available as a Swift Package. To use it in your project, add it to your project's Swift Packages:
https://github.com/JUSTINMKAUFMAN/SwiftUIPhone.gitUsage
SwiftUIPhone can be used as follows:
import SwiftUI
import SwiftUIPhone
@main
struct SwiftUIPhoneDemoApp: App {
@SwiftUI.Environment(\.colorScheme) var colorScheme
let appName: String = "SwiftUIPhone Demo"
@SceneBuilder var body: some Scene {
WindowGroup {
VStack(alignment: .center) {
Button("Launch SwiftUIPhone") { launch() }
}.padding()
}
}
func launch() {
let window = NSWindow(
contentRect: NSRect(x: 0.0, y: 0.0, width: 400.0, height: 809.0),
styleMask: [.titled, .closable, .miniaturizable],
backing: .buffered,
defer: false
)
let view = SwiftUIPhone(
rootView: AnyView(
VStack(alignment: .center) {
Text("This is the root view of my app")
}
.background(colorScheme == .dark ? Color.black : Color.white)
)
)
window.titlebarAppearsTransparent = false
window.hasShadow = false
window.isOpaque = false
window.backgroundColor = NSColor.clear
window.center()
window.setFrameAutosaveName("\(appName).MainWindow")
window.title = appName
window.isReleasedWhenClosed = false
window.contentView = NSHostingView(rootView: view)
window.makeKeyAndOrderFront(nil)
}
}License
SwiftUIPhone is available under the MIT license. See the LICENSE file for more info.
Package Metadata
Repository: justinmkaufman/swiftuiphone
Default branch: master
README: README.md