如何在macOS Cocoa Storyboard中固定窗口大小以匹配内容?
在macOS Cocoa Storyboard中实现窗口大小匹配内容的代码
方式一:在NSWindowController中配置
import Cocoa class MainWindowController: NSWindowController { override func windowDidLoad() { super.windowDidLoad() // 移除窗口可调整大小的样式(可选,若要完全固定窗口大小) window?.styleMask.remove(.resizable) // 让内容视图自动适配其内部内容的尺寸 window?.contentView?.sizeToFit() // 将窗口的最小/最大尺寸设置为内容尺寸,确保窗口无法被拉伸或缩小 if let contentSize = window?.contentView?.frame.size { window?.minSize = contentSize window?.maxSize = contentSize } } }
方式二:在NSViewController中配置
import Cocoa class ViewController: NSViewController { override func viewDidAppear() { super.viewDidAppear() // 让窗口适配内容视图的尺寸 view.window?.contentView?.sizeToFit() // 可选:固定窗口大小,禁止用户调整 if let contentSize = view.window?.contentView?.frame.size { view.window?.minSize = contentSize view.window?.maxSize = contentSize view.window?.styleMask.remove(.resizable) } } }
说明:
sizeToFit()会让内容视图根据其内部控件的布局自动计算并调整到合适的尺寸,窗口会同步适配这个尺寸- 如果不需要固定窗口大小,仅需默认适配内容,可移除
styleMask.remove(.resizable)和min/maxSize设置的代码
内容的提问来源于stack exchange,提问作者swiftPunk
相关产品推荐
相关产品推荐

