2008-10-09 68 views
8

我有一個支持橫向和縱向查看的視圖,當您從一個切換到另一個時,控件都在四處移動。我目前正在通過在用戶旋轉手機時設置每個控件的.center來完成此操作。問題是這很乏味,而且需要很多代碼,並且似乎無法擺脫首先使用Interface Builder的目的。處理IB中的風景/人像差異的最佳方式是什麼?

我的問題是:在Interface Builder中是否有一種方法支持多個外觀(一個用於縱向一個用於縱向)?如果不是其他人如何做IB?你設置了2個視圖嗎?

編輯:只是爲了澄清我的橫向和縱向視圖看起來不同,我不想直變換,我居然在不同的橫向模式下顯示的數據

回答

0

我不是100%肯定,如果有可能,但是您是否考慮過使用不同的視圖控制器進行橫向和縱向?

+0

@Colin:這將如何工作?在一個循環中,我將不得不放棄一個,並添加另一個,我認爲這會對屏幕刷新造成奇怪的影響......這也意味着我必須設置一些通用的父類並嘗試使它們共享代碼......會變得非常混亂 – rustyshelf 2008-10-30 00:56:55

1

必要時,我將UIView對象添加到IB中隱藏的視圖中。給它一個很好的背景顏色,以便您可以看到它,並將它發送到背景。然後在需要設置對象的框架時使用該視圖的框架。如果你有很多人,你可以考慮使用UILabel,所以你可以在IB中給它一個可見的名字。

如果您擔心內存問題,請刪除ViewDidLoad中的所有這些額外的UIView,並將其幀值存儲在成員CGRect s中。當然,如果你沒有任何視圖自動調整大小或重新定位旋轉,這在你的情況下你可能不應該這樣做。我這樣做是因爲任何原因調整大小/重新定位,而不僅僅是當屏幕旋轉時。

0

IB的Size Inspector中的IBOutlet對象的AutoSize屬性(命令3)爲自動拉伸和項目定位提供了一些相當不錯的選項。您可以控制L/R和T/B屏幕位置以及相對寬度和高度。你無法完全控制佈局,但大部分基本操作都在那裏。

0

一個視圖可以支持IB中的多個方向的唯一方法是將組件的自動調整大小設置爲縮放和/或錨定到邊緣。要爲每個方向設計完全不同的佈局,您需要分別設計縱向和橫向視圖(每個都在其自己的XIB中)並以編程方式在它們之間切換。

相關問題