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);
}
所以我将 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);
}