2009-09-03 110 views
6

有没有什么方法可以获得NSWindow的大小(以像素为单位)并显示它?所以,当人调整窗口大小时,文本会发生变化并显示新的大小。获取nswindow的尺寸

回答

12

如果您实现您设置为窗口的委托对象的方法

- (NSSize)windowWillResize:(NSWindow *)sender toSize:(NSSize)frameSize

,只要窗口更改大小就会被调用。从那里您可以更新您用于显示尺寸的文本字段。

+0

确定这里就是我: - (NSSize)windowWillResize:(NSWindow *)sendertoSize:(NSSize)框架尺寸 { \t [长度setStringValue:@ “thisworks”]; \t [width setStringValue:@“test”]; \t return; } (字符串是测试,以确保它的工作原理) 一切都正确连接在IB,它都保存。但是当我运行该应用程序时,它只显示“标签”,并没有说明我所说的内容。 – 2009-09-03 16:56:36

+0

上述代码是否在委托中?你能用代码更新你的问题吗?你必须提供更多的上下文吗? – fbrereto 2009-09-03 17:29:21

+0

它在窗口代表 – 2009-09-03 18:57:47

5

关于什么:

CGSize window_size = my_window.frame.size; 
0

而不是尝试处理调整大小,而是应该确保您的视图的自动调整掩码设置正确。在Interface Builder中,您在大小检查器(⌘3)上执行此操作,并选择视图。

如果你没有设置自动识别掩码来布局整个视图层次结构,那么在你面前有点枯燥乏味,但并不难(只是单调乏味),而且不会很长。这就是为什么你应该在创建视图时设置视图的自动调整掩码。

一旦设置了自动调整屏蔽,视图将自动调整大小;除非你的界面很复杂,或者任何视图都可以缩小到零,否则你不需要介入。

+0

这将如何允许我使用NSTextField显示大小? – 2009-09-03 18:00:59

+0

哦,我以为你是想要获得它的大小并调整你的观点。抱歉。我赞同肯的回答。 – 2009-09-03 19:59:53

2
NSSize myNSWindowSize = [ [ myNSWindow contentView ] frame ].size; 

...应该是你在找什么。 fbrereto的建议是你应该使用的,如果你想要的大小,包括NSWindow的标题栏。

+0

或者,获取窗口的“框架”,然后向窗口发送一个“contentRectForFrameRect:”消息来转换它。 – 2009-12-15 10:42:47