2017-06-05 171 views
1

這是我的xib文件,被視爲iPhone6/iPhone7,看起來不錯。如何添加不同的約束取決於iPhone屏幕大小?

enter image description here

,但如果我把它變成iPhoneSE,變得異常。

enter image description here

Becasue空間空白不改變設備改變時,我無法改變空間約束適應裝置而不代碼。

+0

。 [閱讀此](http://www.appcoda.com/auto-layout-guide/)指南獲取更多關於你如何做到這一點的信息。 –

+0

您想要靈活地查看哪些視圖中的空白? – PGDev

+0

您是否嘗試將視圖寬度和高度設置爲與VC視圖成比例? – Bluewings

回答

0

您需要爲支持所有像這樣的設備製作常量。

var SCREEN_WIDTH = UIScreen.main.bounds.size.width 
var SCREEN_HEIGHT = UIScreen.main.bounds.size.height 
var BASE_SCREEN_HEIGHT:CGFloat = 667.0 
var SCREEN_MAX_LENGTH = max(SCREEN_WIDTH, SCREEN_HEIGHT) 
var ASPECT_RATIO_RESPECT_OF_7 = SCREEN_MAX_LENGTH/BASE_SCREEN_HEIGHT 

我想你的基地佈局是iPhone 7是你的設計駐留在iPhone 7佈局。

現在創建一個函數,這將有助於根據設備更新您的約束。喜歡這個。

func updateConstraint() { 
    topConstantOfYourLabel.constant = 10*ASPECT_RATIO_RESPECT_OF_7 
} 

在viewDidLoad中調用此方法,您的佈局就好了。

注: 對於您需要根據您的needs.I一些變化的景觀模式,假設你只支持肖像模式。

+0

這段代碼應該可以工作,我打算使用代碼來解決,但我想找到一種方法來實現它只是通過IBoutlet –

1

嘗試以下限制:

enter image description here

輸出:iPhone 6/7

enter image description here

輸出:iPhone SE

enter image description here

更清楚地指定您的要求,以便我可以幫助您更多。

1

你不應該添加不同的約束取決於iPhone的屏幕大小!因爲限制與任何屏幕尺寸完美的作品

只是做一個簡單的解決在佈局約束:

問題: 那麼什麼,我看到你有UIScrollView的高度問題,看來你設定一個固定的 首先你需要刪除高度限制爲UIScrollView的 第二隻需添加一個高度約束的UIScrollView等於父屏幕的高度,並給它一個PERC:對UIScrollView的

解決方案高度約束entage

注: 如何把百分比約束 - >突出的約束,然後從屬性檢查器中有一個名爲乘數務必將您的約束權的屬性需要值0.0〜1

+0

UIScrollView的高度必須僅依賴於內部的ContentView。所以給它一個明確的高度是錯誤的想法。 – BootMaker

+0

對不起,我沒有提及內容視圖的大小,我們討論容器大小,完全給容器視圖明確的高度並不影響它的內容視圖的大小 –

相關問題