内容不会填充没有标题栏的 NSWindow

问题描述 投票:0回答:2

我正在尝试创建一个自定义 NSWindow,我希望我的内容完全填充可用空间,我已设法隐藏导航栏按钮和标题并使其透明,但是当我设置内容以填充那里的可用空间时底部有一些空间不起作用

我创建窗口的方式:

  private func createWindow() -> MyWindow {
    let window = MyWindow(
      contentRect: NSRect(x: 0, y: 0, width: 10, height: 10), // these values don't matter, the window expands to the swiftUI view
      styleMask: [.titled, .closable, .fullSizeContentView],
      backing: .buffered, defer: false)
    
    window.titlebarAppearsTransparent = true
    window.titleVisibility = .hidden
    window.isMovableByWindowBackground = false
    window.isReleasedWhenClosed = false
    window.collectionBehavior = [.transient, .ignoresCycle]
    window.standardWindowButton(.closeButton)?.isHidden = true
    window.standardWindowButton(.zoomButton)?.isHidden = true
    window.standardWindowButton(.miniaturizeButton)?.isHidden = true
    return window
  }

在我的组件上,我添加了以下属性:

.ignoresSafeArea()

我已经遵循了这个问题中的所有建议,但似乎对我的案例没有任何作用,感谢任何帮助

macos cocoa swiftui nswindow
2个回答
4
投票

看起来我已经复制了你可能拥有的内容

window.contentView = 
  NSHostingView(rootView: 
     Rectangle().fill(Color.red)
       .ignoresSafeArea()                 // << works !!
       .frame(width: 640, height: 480)
    // .ignoresSafeArea()             // << issue when here !!
  )

更多发现:即使最后使用

ignoresSafeArea
也没有问题,即何时使用最小 W/H 而不是严格的窗口框架。

.frame(minWidth: 640, minHeight: 480)
.ignoresSafeArea()

0
投票

删除

.ignoresSafeArea()

并替换为

.background({color}, ignoresSafeAreaEdges: .top)

其中

{color}
是背景颜色。

© www.soinside.com 2019 - 2024. All rights reserved.