2012-06-28 67 views
1

我有一個NSWindow並已實施windowWillResize可可最大化事件的大小調整內容

在這種方法中,我有一些代碼調整我的窗口的內容。它效果很好。

但是,當用戶想要用綠色加號按鈕(在標題欄中)最大化(縮放)窗口時,窗口正在增長,但windowWillResize未被調用。

我試圖實施windowShouldZoom方法。該方法被調用,但目前我無法獲取窗口大小。

感謝您的幫助!

回答

0

windowWillResize:toSize:這樣的通知實際上更多地用於限制窗口,例如,對於可能希望在特定邊界上對齊窗口的圖像查看器。可以在不調用通知的情況下更改框架(例如,setFrame:display:),因此依靠此類回調進行佈局並不好。

考慮制定一個NSView子類,是要安排意見的家長,然後實現方法,如resizeSubviewsWithOldSize:視圖水平。這也有一個好處,就是你可以保持子樹中包含的佈局邏輯:也許有一天,你認爲視圖不一定需要使用整個窗口(例如用戶控制的側邊欄顯示/隱藏),並且這樣「主」窗口區域可以神奇地使用任何空間來進行佈局。

請注意,使用NSView作爲調整大小的基礎並不意味着窗口狀態不可用;例如視圖可以檢測窗口是否已經開始或結束「實時調整大小」並相應地優化佈局。