【问题标题】:NSViewController disable resize when presented as Sheet?NSViewController 在显示为表格时禁用调整大小?
【发布时间】:2015-11-04 15:13:26
【问题描述】:

所以我将一个 NSViewController 作为一个表单呈现一个已禁用调整大小的窗口。

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

如何禁用调整 NSViewController 的大小?

【问题讨论】:

  • 如果您在界面编辑器中取消勾选“调整大小”复选框,您将无法调整窗口大小。如何调整视图大小?
  • 是的,我无法调整窗口大小,但如果我展示ViewControllerAsSheet,那么我可以调整该视图的大小,这是我想要避免的。

标签: macos nsviewcontroller


【解决方案1】:

斯威夫特 4:

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

顺便说一句,您无需编写代码就可以做到这一点,方法如下:

  • 将窗口控制器元素从对象拖到情节提要 图书馆。
  • 将窗口控制器连接到您要禁用调整大小的特定视图控制器。
  • 在窗口控制器的属性中取消选中调整大小选项。

【讨论】:

  • 这似乎不适用于显示为 sheets 的视图,如问题文本所示。
  • 这不适用于presentAsSheet() 呈现的视图。
【解决方案2】:

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

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

【讨论】:

  • 如果你覆盖 (void)updateViewConstraints 方法对我有用
  • 可能很简单——preferredContentSize = view.frame.size
【解决方案3】:

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

- (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);

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-02
    • 2015-10-26
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多