如果使用presentViewControllerAsSheet方法或使用样式“sheet”的segue将视图控制器显示为工作表,是否有办法阻止视图调整大小。
请注意,模态/显示段可以植入到窗口控制器中,该窗口控制器可以从故事板本身设置为不可调整大小。默认情况下,popover类型的分段是不可调整大小的。
任何帮助都会很明显。
答案 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
最小/最大大小:
就是这样,超级简单! (不要忘记将窗口控制器设置为初始控制器。)
答案 2 :(得分:0)
以上方法对我不起作用。
self.view.autoresizesSubviews = NO;
如果上述方法不起作用,viewcontroller中的这一行应该可以解决问题
答案 3 :(得分:0)
这对我有用。工作表不再可调整大小:
override func viewWillLayout() {
preferredContentSize = view.frame.size
}