2011-11-29 95 views
1

是否可以從界面構建器(XCode 4.1)爲佈局設置橫向和縱向方向的佈局?我問這個問題,因爲當我爲肖像設置佈局,然後將視圖方向更改爲風景並根據風景再次重新設置佈局時,它將與最後一個佈局保持橫向方向!這意味着,當我切換回縱向時,佈局不會改變。從界面構建器更改佈局的兩個方向

從IB的這個問題的任何解決方案?

編輯:

我現在明白了主意,於是IB會給你有限的靈活性,我從兩個方向查看打,這是有限的,因爲我不能爲我的每個方向圖產生一個完全新的佈局從IB,例如,如果我有六個UIButtons(與它們的影子圖像視圖)放置在縱向如下面的截圖:enter image description here

,並給予每個按鈕和陰影圖像視圖中的所有調整口罩在這個截圖:

enter image description here

結果在景觀將被搞砸了在這個截圖:

enter image description here

所以我有兩個問題:

1)它可以設置自動縮放這些對象(來自IB),這樣景觀視圖將與肖像視圖匹配?如果是的話如何?

2)我可以設計(從IB)一個完全不同的佈局景觀(不影響縱向原來的佈局),如下面的截圖:

enter image description here

如果我不能,我認爲解決方案是從代碼中提出新的觀點,這是真的嗎?

謝謝你的幫助。

回答

2

要在界面構建器中自動更改視圖的佈局,必須爲視圖的所有圖形對象設置自動識別遮罩選項。你可以做到這一點編程,如:

myObj.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; 

或者在每個對象的Size Inspector選項卡界面生成器。您應該看到這樣的事情:

enter image description here

當線路是紅色的,這意味着保證金(關於物體的容器)將保持不變,如果設備方向的變化。在其他情況下,邊距將更改以適應視圖容器中的對象放置。

不太可能的,當行是在NOT爲紅色,則表示TEH對象的大小將保持不變中的所有的設備取向,否則該尺寸將被修改

所以(例如用於背景圖像是有用的) ,在上面的例子中,對象的大小不會改變,左邊和上邊距不會改變它的容器。

希望這已經夠清楚了。不要猶豫的情況下,反應還不清楚

編輯

你可以簡單地做下面的伎倆檢查調整面膜的結果,而無需重新編譯應用程序:

  • 選擇uiviewcontroller主視圖(self.view)
  • 轉到屬性檢查器
  • 在「模擬度量標準」部分,您應該看到'方向'項目
  • 切斷並從「肖像」,以「山水」,查看結果視圖

EDIT1

如果我正確理解你的意思,我想你可以這樣來做:

enter image description here

配售您的按鈕,在視圖中容器的陰影圖像視圖。然後設置視圖容器自動調整,因爲您正在爲自己的按鈕執行右鍵操作,並鎖定與該視圖容器有關的按鈕和圖像視圖大小/邊距。

這應該工作。

+0

非常感謝你的徹底澄清。不過,請在問題正文中查看我的(EDIT)。 – JAHelia

1

這當然不是IB的問題。沒有內置的機制來切換到完全不同的方向變化佈局。

如果您的對象(按鈕/陰影)大小不同,那麼您必須將它們分組到視圖中,@Niko表示用於自動調整掩碼才能正常工作。

+0

對象的大小不一樣。所以要完全切換到一個新的不同的方向變化佈局,我應該返回代碼併爲該佈局創建一個新的視圖? – JAHelia

+0

您可以爲縱向和橫向定位(在IB中)設計兩個單獨的視圖,將它們添加到頂部視圖(例如viewDidLoad中),然後在方向更改時顯示/隱藏適當的子視圖。 – mifki

+0

對不起mifki,我沒有想到,如何將viewDidLoad中的兩個視圖添加到頂部視圖?如果我這樣做了(創建第二個不同的方向改變視圖),那麼,我必須創建(例如)兩個按鈕,標記爲(1)和兩個按鈕(標記爲2)等...直到(6)根據我上面的屏幕截圖,這意味着每個按鈕的功能加倍(考慮到每個按鈕觸發一個IBAction方法),這反過來會產生很多冗餘代碼。所以你認爲最好的情況是什麼? – JAHelia