2012-01-22 58 views
2

作爲一個有點熟練的iOS開發人員,我剛剛開始在Cocoa開發桌面OSX項目,我遇到了一些我無法理解的問題。所以這個問題是針對OSX開發者的。在桌面項目上使用autosizing或autoresizingMask不好?

我不太喜歡Interface Builder,所以我傾向於在代碼中編寫我的視圖。我寫我的視圖佈局代碼的最突出的方法是視圖控制器的方法loadView方法和至少在iOS我使用autoresizingMask s的一切。嘗試一下小的,大的,旋轉的風景和肖像,如果一切都很花哨,我繼續我的清單上的下一個項目。現在在桌面上,autoresizingMask工作(或只是看起來)有點不同。首先,這些屬性有不同的名稱,但它們的行爲似乎也很奇怪或出乎意料。

當我遇到下面的問題時,我認爲它一定是我的代碼錯了,所以在嘗試了足夠長的時間後,我只是爲了確認而重新創建它,並猜測:我得到了完全相同的結果結果。採用四個垂直堆疊的子視圖進行查看。設置中間兩個有靈活的高度,外部的要固定。當您運行它時,將其縮小並重新備份,在調整大小之前和之後,我會得到兩個完全不同的佈局。見圖片:

enter image description here

現在我可以按照這個原因,從運行環路之間數學的角度發生,但是從「自動調整大小」或「自動尺寸」功能的角度來看,這使得完全沒有意義。

在我試圖在這裏寫下所有調整大小的主題之前,我可以問你這些問題嗎?如果您覺得它增加了帖子,請隨時詳細說明調整大小主題。

  1. 我是一個傻瓜不想使用界面生成器在桌面上的項目?
  2. 我應該依靠autoresizingMask比我在iOS項目上少嗎?
  3. 什麼是體面的替代品,以確保您的佈局達到標準沒有Interface Builder?

乾杯!

+0

問題是你的可視化小的最小窗口大小,而不是Interface Builder。不要調整視圖的大小,使它們小於1像素高,不會自動調整大小。 –

回答

1
  1. 是的,在我看來。 :)

  2. 你應該依賴它,當它做你所需要的。當它不足時,覆蓋resizeSubviewsWithOldSize:和/或resizeWithOldSuperviewSize:(或參見下文)。

  3. ???

如果您的目標是10.7,請查看新的基於約束的佈局系統。查看Cocoa Autolayout來自WWDC 2011的視頻。

你也可以在你的NSWindow上設置minSize來防止奇點。

+0

感謝Rob,尤其是WWDC視頻提示。對於遇到這個問題的其他人,2011年Cocoa Autolayout視頻的編號爲103.我也很高興看到有一個廣泛的基於代碼的替代方案來完成Interface Builder中的所有工作。我仍然沒有粉絲:) – epologee

1
  1. 我不確定我會說「傻瓜」,但拒絕在Mac上使用Interface Builder是一個非常... avante-garde的選擇。

  2. 你一定要在你的意見中使用自動調整。

  3. 請專心致志,花大量時間確保一切正常。 (這就是爲什麼我不建議沒有Interface Builder中去。一般情況下,你得到的是很多的,你可以把時間用在做別的事情浪費時間。)

在這種情況下,我覺得最好的辦法是爲窗戶設置合理的最小高度。不要讓它變得太小而不能顯示它需要顯示的內容。

+0

謝謝查克,我不得不挑選一個答案,所以我去了羅布的,但我同意'前衛'聽起來好多了:) – epologee

相關問題