2015-02-09 53 views
0

Compact HeightUICollectionView改變流動方向

Compact Width

嘿,我想獲得你在圖片中看到:在緊湊型身高模式(風景iphone)紅色和藍色的看法有垂直拍攝所有屏幕和水平拍攝一半的屏幕。在緊湊寬度模式(肖像iphone)中,他們必須將所有屏幕水平放置,垂直放置一半屏幕。視圖之間的空間在兩種模式下應該是相同的大小。

我曾經以爲我不得不使用規模類和自動佈局的限制,但我想一切都悲慘地失敗了。

也許我必須使用基於方位的UICollectionView和改變流動方向(如果這甚至有可能)?

回答

1

集合視圖可能是矯枉過正,因爲你不想滾動,這是一個集合視圖整點 - 由你做的大小的時候停止了,你會做了所有必要的工作來設置一個不滾動的佈局。

這對IB中的Size Classes是可能的。首先,一般來說,您可能會發現在IB左側的文檔大綱中命名視圖很有幫助。你也會想要使用這個輪廓,而不是試圖抓住小約束H-線。

  1. 設置所有的除了1)鏈接 OrangeView和藍景彼此約束的限制,2)連接 的OrangeView到頂部和約束左(前導),和3)約束 鏈接BlueView到底部和右側(尾部)。
  2. 變化在底部的尺寸等級設定爲w緊湊和 H-不限於時髦的盒系統。現在我們正在設計一個緊湊的寬度,所以視圖在彼此之上。
  3. 爲BlueView.bottom創建一個垂直空間約束條件爲 OrangeView.Top。同時爲OrangeView創建約束條件,將superview.leading(或ledaing,margin)和BlueView創建爲 superview.trailing.margin。如果您選擇了這些約束條件中的任何一個,然後查看右側的尺寸檢查器(標尺),則應該看到未選中的「已安裝」複選框,並且在下方顯示w-Compact h-Any和另一個已安裝的框, 。
  4. 現在,在保持選中的約束以查看會發生什麼情況下,將底部的sizeClass選擇器更改爲w-Regular h-Any。請注意,在左側的文檔大綱中,它應該變灰。
  5. 現在我們正在設計定期,如此並排。添加將水平空間的視圖BlueView.trailing鏈接到OrangeView.leading的約束。還將OrangeView.top鏈接到superview.top或頂部與BlueView.top對齊,底部也是如此。您可以先手動編輯框架;如果不是,IB將自動填寫錯誤的值,所以在創建它們後編輯它們,並驗證它們是w-Regular和h-Any。選擇ViewController後,選擇「更新幀」,視圖應該捕捉到它們對於尺寸類的預期形狀。

讓我們知道如果這對你的作品,如果它是不清楚。祝你好運!

+0

嘿邁克爾,感謝您撰寫這樣詳細而詳盡的答案! IB在某些時候可能非常不直觀...... – 2015-02-10 19:57:08

+0

我仍在嘗試學習自動佈局和大小類:在第1步。當你說「設置所有約束條件」時,你的意思是:1)藍色到頂部2)藍色到頂部3)橙色到底部4)橙色到尾部? Xcode抱怨我錯過了藍色和橙色的高度和寬度限制。我已經嘗試爲藍色和橙色設置相等的寬度和高度,但它不起作用「無法同時滿足約束」。依次類推...... – 2015-02-12 09:55:37

+0

是的,Xcode的警告有時非常有效,有時需要忽略 - 這就是爲什麼有一個「佔位符」選項,只是爲了安靜警告,如果你知道你要在代碼中處理它們。 – 2015-02-12 13:25:38