禁用NSView的大小调整

时间:2015-10-20 13:30:23

标签: nsview

我使用NSViewController的presentViewControllerAsSheet API显示工作表。有没有办法禁用显示的视图大小调整?

我在网上查了一下,有些方法可以禁用窗口大小调整,但不能禁用NSView。

由于

4 个答案:

答案 0 :(得分:0)

我能够通过在viewDidLoad()中的视图控制器上设置preferredContentSize来实现这一点

[self setPreferredContentSize:self.view.frame.size];

答案 1 :(得分:0)

设置preferredContentSize对我来说不适合使用Swift 4.0和XCode 9.2,例如:
self.preferredContentSize = NSSize(width: 448, height: 250)

但是,我可以在viewDidAppear()中设置像这样的最小尺寸参数:
self.view.window?.contentMinSize = NSSize(width: 448, height: 250)

我想你也可以通过设置最大尺寸和showsResizeIndicator来禁用调整大小。请注意,在viewDidLoad()中设置这些参数不起作用。

答案 2 :(得分:0)

@dev答案适用于Swift 4(Xcode 9.3)

std::variant

如果使用storyboard,请确保将类分配到NSViewController。

答案 3 :(得分:0)

我的2美分,包括Swift / OSX / catalina

假设您希望列表只允许垂直缩小(固定宽度)

override func viewDidAppear() {
    self.setFixedWidth()

}

final private func setFixedWidth(){
    self.view.window?.contentMinSize = NSSize(width: 300, height: 250)
    self.view.window?.contentMaxSize = NSSize(width: 300, height: 1250)
}

拖动时只能垂直展开(不能放大)。