इसे प्राप्त करने के लिए संभावित दृष्टिकोण का एक सरलीकृत डेमो यहां दिया गया है। परीक्षण और Xcode 11.2 के साथ काम करता है।
1) आवश्यक शैली और पृष्ठभूमि में करने के लिए विंडो तैयार करें AppDelegate
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Create the SwiftUI view that provides the window contents.
let contentView = ContentView()
.edgesIgnoringSafeArea(.top)
.frame(minWidth: 480, maxWidth: .infinity, minHeight: 300, maxHeight: .infinity)
// Create the window and set the content view.
window = NSWindow(
contentRect: NSRect(x: 0, y: 0, width: 480, height: 300),
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered, defer: false)
window.center()
window.titlebarAppearsTransparent = true
window.titleVisibility = .hidden
window.setFrameAutosaveName("Main Window")
window.contentView = NSHostingView(rootView: contentView)
window.makeKeyAndOrderFront(nil)
}
2) आवश्यक व्यवहार करने के लिए विंडो सामग्री दृश्य तैयार करें
struct ContentView: View {
private let tabs = ["Watch Now", "Movies", "TV Shows", "Kids", "Library"]
@State private var selectedTab = 0
var body: some View {
VStack {
HStack {
Spacer()
Picker("", selection: $selectedTab) {
ForEach(tabs.indices) { i in
Text(self.tabs[i]).tag(i)
}
}
.pickerStyle(SegmentedPickerStyle())
.padding(.top, 8)
Spacer()
}
.padding(.horizontal, 100)
Divider()
GeometryReader { gp in
VStack {
ChildTabView(title: self.tabs[self.selectedTab], index: self.selectedTab)
}
}
}
}
}
struct ChildTabView: View {
var title: String
var index: Int
var body: some View {
Text("\(title)")
}
}