2012-05-05 50 views
6

我正在製作一個在OS X上使用的應用程序,並且我注意到Interface Builder中的新約束功能是多麼有用(現在當然是內置於Xcode中)。事實上,它非常有用和動態,所以我在質疑我是否應該設置最小窗口大小,還是僅僅依靠我的窗口的約束條件來設置最小值和最大值。我應該使用視圖約束還是最小窗口大小?

我有一種感覺,OS X會考慮最小和最大窗口大小,而不是以某種方式限制窗口大小,並且爲此設置最小值和最大值可能很有用,但我也覺得依靠約束來動態設置最小和最大窗口高度,這可能是一種很好的風格,因爲它們的動態行爲和全部。例如,如果我決定用約束來改變控件的最小寬度,我不必擔心也會改變最小窗口的最小寬度。

依賴約束來設置最小和最大窗口大小的好處的另一個更重要的例子是,如果用戶更改文本大小之類的東西,我的應用程序中受影響的控件可以動態更改其大小約束,但靜態設置的最小和最大窗口大小會破壞動態行爲。

再次,所有這些好處都應該考慮到,因爲OS X可能會以某種方式考慮最小和最大窗口大小,並且爲此設置最小和最大值可能很有用;我只是不確定如果 OS X考慮到他們,如果他們這樣做,它如何使用它們

我查看了Apple的文檔,找不到任何能提供滿意答案的東西。

回答

2

在這種情況下做最好的事情就是自己嘗試一下。用一個窗口和幾個控件創建一個新應用程序花費不到兩分鐘的時間。你並不需要在所有添加任何代碼,如果你只是想一個可調整大小的窗口中播放:

window 1

此窗口沒有最小尺寸也沒有限制,問題是顯而易見。這樣它看起來像這樣你可以改變窗口大小:

window 2

添加按鈕之間有一些制約因素表明,約束提供的承諾。現在窗口看起來像這樣在其最小尺寸:

window 3

一對夫婦在標籤上更多的約束最終得到期望的結果:

window 4

這是偉大的,但它採取了一些到達那裏的工作。我沒有添加一組完整的約束 - 兩個右手按鈕之間的垂直約束可能是多餘的,因爲左邊的按鈕之間已經存在一個約束。對於有很多控件的窗口來說,設置足夠的約束來覆蓋所有的視圖可能是:a)非常有用和值得,或者b)對接中的痛苦和附加值很小。這取決於你的情況。一個更簡單的方案是將可能重疊的控件的高度(兩個按鈕和標籤)以及它們之間的所需空間相加,然後將其設置爲窗口的最小高度。

根據窗口內容的不同,我可以看到兩種策略都很有用。事實上,我認爲他們根本不是兩個獨立的策略......設置最小窗口維度實際上只是您添加的另一種約束。例如,可能會有一個大小低於您的窗口看起來愚蠢或不是非常有用,所以你可以設置最小窗口大小爲這些尺寸。同時,您可能希望在按鈕之間設置約束以防止本地化版本中的重疊控件(例如,德語名稱會變得相當長)。

相關問題