Eu tenho um código SwiftUI simples para iniciar um pequeno NSWindow, como mostrado abaixo. No entanto, quando a janela aparece, ela é super pequena e ignora o tamanho mínimo.
...
Button("Test Window") {
let window = NSWindow(contentRect: NSRect(x: 0, y: 0, width: 800, height: 600),styleMask: [.titled, .closable, .resizable, .miniaturizable],backing: .buffered, defer: false)
window.minSize = NSSize(width: 200, height: 400)
window.title = "Test Window"
window.contentView = NSHostingView(rootView: TestView())
window.center()
let windowController = NSWindowController(window: window)
windowController.showWindow(self)
}
...
SwiftUI possui uma maneira designada de abrir janelas . Faça isso se seu aplicativo usar o ciclo de vida SwiftUI.
SwiftUI configura restrições de AutoLayout com
NSHostingView
base no arquivosizingOptions
. O valor padrão inclui restrições para os tamanhos mínimo, máximo e de conteúdo intrínseco da visualização SwiftUI. A view SwiftUI que você está usando é muito pequena, então a janela acaba sendo muito pequena.Além disso, definir
NSWindow.contentView
como anNSHostingView
faz com que o tamanho mínimo e o tamanho máximo da janela sejam determinados pela visualização do SwiftUI. DesizingOptions
E como você deve saber,
contentMinSize
tem prioridade sobreminSize
.Para alcançar o efeito desejado, eu definiria
sizingOptions
apenas.minSize
. Defina o tamanho mínimo com um.frame
modificador, já que não controlamoscontentMinSize
mais.