2013-06-25 36 views
1

使用AutoLayout,是否可以將View(按鈕,圖像等)保持在同一位置,但在旋轉設備時將其旋轉90度?使用AutoLayout來旋轉視圖

例如,在以下圖像中,視圖保持與縱向方向(距邊緣相同距離)完全一樣,但在橫向上旋轉。

Portrait Landscape

+0

您是否允許界面方向改變?或者你只是告訴系統你支持縱向定位? –

回答

2

您描述了您提供的圖像中的視圖「保持在完全相同的位置」,但我認爲這是誤解了自動佈局和旋轉行爲。這兩個示例之間的佈局顯着變化。兩個視圖先前沿着它們的左邊緣對齊,現在它們沿着它們的底邊對齊。

基本上:當你旋轉設備(可以說從標準人像到家左風景)你改變哪個視圖是頂部,而不是頂部視圖指向的方向。

如果你想重新創建你提供的旋轉視圖的外觀,你有幾個選項。我建議看一下visual formatting language,這是一種以編程方式添加約束的好方法......看起來更容易。如果您想要一個很好的介紹,請參閱WWDC 2012的iOS自動佈局會談。您可以在設備旋轉時添加和刪除適當的約束條件。 (可能需要稍微玩一下)。 「視圖控制器編程指南」中的'creating a custom landscape orientation'部分也有幫助。

2

如果你允許的接口方向旋轉,那麼你就必須改變你的旋轉限制把你想讓他們的意見。

如果您不允許界面方向旋轉,那麼您必須訂閱設備方向更改通知。當方向改變時,你可以更新視圖的變換來旋轉它們。如果觀點是正方形的,那就足夠了。如果視圖不是正方形,則還需要根據旋轉的幀來修改約束。

+0

感謝您的回答。我允許界面方向從縱向旋轉到橫向。我需要改變什麼限制? – BytesGuy

+0

您需要更改所有影響視圖位置和大小的約束條件。自動佈局不會做任何事情來幫助你。基本上,您需要將所有水平約束更改爲垂直約束,反之亦然。由於您無法更改現有約束的大多數屬性,這實際上意味着要移除所有舊約束並創建新約束。 –