窗口中的SwiftUI子视图消失

窗口中的SwiftUI子视图消失,swiftui,nsvisualeffectview,Swiftui,Nsvisualeffectview,作为一名SwiftUI初学者,我最近刚刚开始创建我的第一个MacOS应用程序。然而,当我试图实现NSVisualEffectView来模糊背景时,我使用的contentView从屏幕上消失了,根本看不见。它看起来像这样: 因此,我尝试将我在contentView中的文本制作成text(“Hello world!”)。边框(宽:700,高:500),屏幕变成这样: 通过这样做,在左下角,Hello world可以看到。但是,除非我将文本放置在contentView的右上角,否则我似乎无法移动它

作为一名SwiftUI初学者,我最近刚刚开始创建我的第一个MacOS应用程序。然而,当我试图实现NSVisualEffectView来模糊背景时,我使用的
contentView
从屏幕上消失了,根本看不见。它看起来像这样:

因此,我尝试将我在
contentView
中的文本制作成
text(“Hello world!”)。边框(宽:700,高:500)
,屏幕变成这样:

通过这样做,在左下角,
Hello world可以看到。但是,除非我将文本放置在
contentView
的右上角,否则我似乎无法移动它。有人知道如何解决这个问题吗

*以下是
AppDelegate.swift
内容供参考:

import SwiftUI

@main
class AppDelegate: NSObject, NSApplicationDelegate {

    var window: NSWindow!


    func applicationDidFinishLaunching(_ aNotification: Notification) {
        // Create the SwiftUI view that provides the window contents.
        let contentView = ContentView()
        let visualEffect = NSVisualEffectView()
        visualEffect.blendingMode = .behindWindow
        visualEffect.state = .active
        visualEffect.material = .fullScreenUI
        visualEffect.addSubview(NSHostingView(rootView: contentView))

        // Create the window and set the content view.
        window = NSWindow(
            contentRect: .zero,
            styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
            backing: .buffered, defer: false)
        window.isReleasedWhenClosed = false
        window.center()
        window.setFrameAutosaveName("Main Window")
        window.contentView = visualEffect
        window.makeKeyAndOrderFront(nil)
        window.titlebarAppearsTransparent = true
        window.titleVisibility = .hidden
        
    }

    func applicationWillTerminate(_ aNotification: Notification) {
        // Insert code here to tear down your application
    }
    
} 

这回答了你的问题吗?在我的例子中,我最大的问题是我的视图(默认的“hello world”)正在离开屏幕。这个问题并不能完全解决我的问题,因为我希望整个窗口都模糊,包括标题栏……更新:@Asperi您发布的解决方案适用于后台,但我只能在
contentView()
上实现它,这意味着标题栏再次出现。有什么办法可以改变吗?你只需要把它隐藏起来,就像在@Asperi中一样,它可以工作,但现在底部显示了背景。这能回答你的问题吗?在我的例子中,我最大的问题是我的视图(默认的“hello world”)正在离开屏幕。这个问题并不能完全解决我的问题,因为我希望整个窗口都模糊,包括标题栏……更新:@Asperi您发布的解决方案适用于后台,但我只能在
contentView()
上实现它,这意味着标题栏再次出现。有什么办法可以改变吗?你只需要把它隐藏起来,就像在@Asperi中一样,这样就行了,不过现在底部显示了背景?