import SwiftUI /// Zeigt die CarPlay-Ansicht im iPhone-Simulator, in den Maßen, die CarPlay /// tatsächlich liefert (400 × 240 Punkte, also 800 × 480 Pixel). /// /// Nur zum Beurteilen des Layouts, solange der CarPlay-Simulator selbst nicht /// zur Verfügung steht. Ohne `CARPLAY_DEMO_PREVIEW` in der Umgebung passiert /// nichts, und ohne das `CARPLAY_DEMO`-Flag existiert der Code gar nicht. extension View { @ViewBuilder func carPlayPreviewOverlay() -> some View { #if CARPLAY_DEMO if ProcessInfo.processInfo.environment["CARPLAY_DEMO_PREVIEW"] != nil { CarPlayPreviewHost() } else { self } #else self #endif } } #if CARPLAY_DEMO struct CarPlayPreviewHost: View { var body: some View { // Ohne Beiwerk und exakt zentriert: so laesst sich der Screenshot // verlustfrei auf den CarPlay-Bereich zuschneiden. VStack { CarPlayLevelScreen() .environment(CarPlayLevelSource.shared) .frame(width: 400, height: 240) } .frame(maxWidth: .infinity, maxHeight: .infinity) .background(Color.black) .ignoresSafeArea() .onAppear { CarPlayLevelSource.shared.start() } } } #endif