2015-05-25 80 views
3

我需要用一個UIControl自動佈局故事板UIView。 UIControl應居中,需要具有1:1的寬高比,並且應始終使用90%的總觀寬度或高度,具體取決於設備方向而不削減。IOS8 Autolayout相對寬度/高度

我加4個約束

  1. 中心Y調整 - 視圖 - 上海華
  2. 中心X對齊 - 視圖 - 上海華
  3. 相等寬度 - 視圖 - 上海華與乘數設定爲0.9
  4. 寬高比 - 視圖 - 倍數設置爲1:1的視圖

此設置在縱向模式下正常工作,但lan失敗dscape模式。 (見下圖)

我需要什麼樣的約束來解決這個問題。如果設備旋轉,我是否必須更改約束條件?

人像模式 Portrait mode

風景模式 - 錯 Landscape mode - wrong

風景模式 - 實體模型。這就是我想要的。 Landscape mode - ok

回答

4

這裏是一個辦法做到這一點:

  1. 從上面列出的四個限制開始:中心X,中心Y,等寬(0.9乘數)和寬高比,全部優先1000.
  2. 將等寬的優先級更改爲750.這將允許自動如果需要,佈局忽略或修改此約束。
  3. 添加一個等高(視圖 - 超視圖)約束,但不是等於,使其小於或等於乘以0.9。將其優先級設置爲1000.

現在,當您處於縱向模式時,Auto Layout將能夠像以前一樣將紅色框的寬度設置爲90%,以滿足您的所有約束條件。當您切換到橫向時,平等高度限制將確保紅色框不會超過高度的90%,因爲此限制具有1000的優先級,但自動佈局也會使框儘可能大,以嘗試最好服務於等寬度限制。

1

您強制您的視圖寬度和縱橫比。因此,當寬度增加時,自動佈局會強制您的高度增長以保持1:1的寬高比。 你必須:

  • 設置約束你的高度和寬度是<= 0.9* Superview與1000優先
  • 您的高度和寬度設置的限制是== 0.9* Superview有750優先

我沒「T嘗試,但它應該更好看;)

+0

謝謝昆汀。你的回答很好,但並不完全符合我的需要。我添加了一個新的截圖到我原來的問題,以可視化我的問題。 –

+0

您是否保持1:1約束(1000優先級)?如果沒有,把它放回去! –