2009-09-03 140 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