OS-X:如何防止调整以表格形式呈现的视图控制器的大小

时间:2015-05-07 16:43:19

标签: objective-c macos cocoa

如果使用presentViewControllerAsSheet方法或使用样式“sheet”的segue将视图控制器显示为工作表,是否有办法阻止视图调整大小。

请注意,模态/显示段可以植入到窗口控制器中,该窗口控制器可以从故事板本身设置为不可调整大小。默认情况下,popover类型的分段是不可调整大小的。

任何帮助都会很明显。enter image description here

4 个答案:

答案 0 :(得分:7)

您是否尝试过设置工作表视图控制器的-preferredContentSize?如果不这样做,那么在NSLayoutConstraint上向视图控制器的视图添加宽度和高度-viewDidLoad怎么办?

答案 1 :(得分:1)

其他解决方案都没有对我有用,所以我最终使用NSWindow作为工作表控制器(而不是NSViewController)。

在头文件中声明NSWindowController对象:

NSWindowController *detailWindow;

要以工作表的形式打开窗口,请使用以下代码:

NSStoryboard *storyFile = [NSStoryboard storyboardWithName:@"Main" bundle:nil];
detailWindow = [storyFile instantiateInitialController];
[self.view.window beginSheet:detailWindow.window completionHandler:nil];

关闭窗口:

[self.view.window endSheet:detailWindow.window];

要停止调整窗口大小,只需在界面构建器中设置NSWindow最小/最大大小:

enter image description here

就是这样,超级简单! (不要忘记将窗口控制器设置为初始控制器。)

答案 2 :(得分:0)

以上方法对我不起作用。 self.view.autoresizesSubviews = NO; 如果上述方法不起作用,viewcontroller中的这一行应该可以解决问题

答案 3 :(得分:0)

这对我有用。工作表不再可调整大小:

override func viewWillLayout() {
    preferredContentSize = view.frame.size
}