NSViewController 在显示为 Sheet 时禁用调整大小?

NSViewController disable resize when presented as Sheet?

所以我将 NSViewController 呈现为 sheet 的 window 已禁用调整大小。

显示为 sheet 的视图控制器仍然可以调整大小

如何禁用调整 NSViewController 的大小?

经过更多尝试后,我发现这在 viewDidLoad 中起到了作用:

self.preferredContentSize = NSMakeSize(self.view.frame.size.width, self.view.frame.size.height); 

Swift 4:

override func viewDidAppear() {
   // any additional code
   view.window!.styleMask.remove(.resizable)
}

顺便说一下,您可以在不编写代码的情况下执行此操作,方法如下:

  • 将一个 Window 控制器元素从对象拖到故事板 图书馆。
  • 将 Window 控制器连接到要禁用调整大小的特定视图控制器。
  • 在 Window 控制器的属性中取消选中调整大小选项。

如果您添加这些方法,问题将会得到解决。

- (void)updateViewConstraints NS_AVAILABLE_MAC(10_10) {

    [super updateViewConstraints];

}

- (void)viewWillLayout NS_AVAILABLE_MAC(10_10) {

    self.preferredContentSize = NSMakeSize(self.view.frame.size.width, self.view.frame.size.height);

}