【发布时间】:2010-12-03 12:10:10
【问题描述】:
我们如何修复 NSWindow 的大小,以便用户不能通过鼠标拖动来调整它的大小,或者有没有办法让所有子视图窗口在用户更改窗口大小时调整大小,实际上是问题是当用户更改窗口大小时,子视图不会调整我想锁定窗口大小调整的大小吗?
【问题讨论】:
标签: objective-c cocoa nswindow
我们如何修复 NSWindow 的大小,以便用户不能通过鼠标拖动来调整它的大小,或者有没有办法让所有子视图窗口在用户更改窗口大小时调整大小,实际上是问题是当用户更改窗口大小时,子视图不会调整我想锁定窗口大小调整的大小吗?
【问题讨论】:
标签: objective-c cocoa nswindow
我可能错过了这里的重点(而且有点晚了),但你不能在窗口本身上设置“约束”选项吗?
如果最小和最大尺寸相同,则会阻止调整大小。
【讨论】:
也许不是您想要的答案,但您可以通过禁用调整大小指示器(通过setShowsResizeIndicator)来防止调整大小,然后实现...
- (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize
...NSWindowDelegate 委托方法,以便它简单地返回现有的窗口大小。
奇怪的是没有“setCanResize:”方法,但是你去吧。
【讨论】:
以下假设您使用 Interface Builder 进行窗口布局:
要调整子视图的大小,请转到 Size Inspector (command-3),然后为每个子视图设置其 Autoresizing 支柱和拉伸(单击矩形中的红线),直到预览动画执行您想要的操作。记住: (1) 如果一个父视图没有伸展,它的子视图也没有; (2) 如果您使用滚动条,如果内容可沿与滚动条相同的方向拉伸,它们将永远不会出现。
如果您确实需要一个锁定的窗口,并且没有调整大小的控件,您可以在属性检查器(command-1)中取消选中这些选项。或者,更简单地说,为窗口创建一个 IBOutlet 并将其放入您的代码中:
[self.theWindow setStyleMask:NSBorderlessWindowMask];
【讨论】: