2012-11-22 22 views
0

在我目前正在研究的程序上,我想鎖定主窗口的長寬比,以確保一些視覺元素保持相稱。NSWindow setAspectRatio是否包含頂欄的大小?

我設法做在AppDelegate類下面得到這個工作:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 

    [window setAspectRatio:NSMakeSize(1.48, 1.0)]; 

} 

當用戶拖動窗口,寬高比被鎖定爲我所期望的,但有一個問題。我已經指定了一個窗口大小爲IB的592x400,這符合縱橫比,但是當我在應用程序運行時第一次嘗試調整窗口大小時,窗口類型會快速捕捉到新的比率。我猜測setAspectRatio:可能會進入窗口頂部的欄中,從而搞亂了計算。

有沒有人知道一個體面的解決方法這個問題,或任何其他的方法?

另外,是否有一種方法來調整窗口的大小,以尊重由setAspectRatio設置的縱橫比?

之前,改變大小編程我一直在使用的時候:

[window setContentSize:NSMakeSize(592, 400)]; 

,我有測試,以確認它忽略指定縱橫比,正如所預料的!

謝謝!

回答

2

IB中的大小是內容大小 - 它不包含標題欄的22個點(假設標準標題欄)。你想要的是使用setContentAspectRatio:來代替。

至於編程調整大小,沒有API。您應該決定哪個維度是您的參考,然後適當乘以或除以內容寬高比來獲得另一維度,然後像以前一樣setContentSize:

+0

非常感謝,我甚至沒有注意到setContentAspectRatio:當我檢查文檔!它不會放在'sizing windows'標題下的setAspectRatio:但在'sizing contents'標題下。只是改變了它在我的程序,它工作正常! – tom1990