2016-11-25 54 views
0

我正在使用UIStackView和dimeview的stackview是「按比例填充」。UIImageview propotion與stackview自動佈局

enter image description here

在上述層次結構的第一視圖,我有一個UIImageView以1:1的縱橫比。

enter image description here

出於某種原因視圖控制器顯示錯位的視圖的警告。爲什麼這樣?我無法理解我的約束有什麼問題。

第二件事是,如果我會接受更改框架並使用其他設備的變化,而不是某個時間UIImageView高度和寬度不一樣,它會改變,無論它的比例是1:1。例如,如果70:70的寬度和高度比設備變化之後變爲70:71或69.5:10:5 ..這裏發生了什麼?

接受更新後的幀(檢查的UIImageView其中寬度的寬度和高度=身高1:1倍的比例)

enter image description here

我在這裏幹什麼什麼了嗎?

還有一件事是我的比例高度三個視圖分別是135,105和240,但是當我重新打開該項目時,它改爲160,160和151.所以,這是一個默認行爲?

這裏是Demo link如果你想測試這個問題。

+0

您沒有對右側控件添加約束。 –

+0

你是什麼意思? @AbdulRehmanWarraich ...我爲它的超級視圖添加約束..爲什麼它不是正確的控制? –

+0

您需要從層次結構中的底部開始。首先將約束添加到stackView然後內部視圖,然後添加到ImageView。 –

回答

0

那是因爲你沒有添加領導約束。

您需要設置imageView的y位置。

這裏是一個項目link

+0

我已經有中心X ..所以這意味着它應該在頂部和底部約束和縱橫比的中心.. 。不需要在這裏給出主要約束... –

+0

@vadim如果水平中心添加了寬度約束,則不需要前導約束。 –

+0

@VadimKozak我的約束和問題是不是真正的固定寬度和高度...它關於比例imageview的高度和寬度 –

0

我檢查你的項目,並沒有任何問題的。只選擇ImageView並點擊「更新幀」。並設置頂部和底部空間相等。 長寬比是四捨五入的,因此它的差值爲1或更小。

寬高比根據視圖的高度和高度ImageView的計算總是等於(查看高度 - 61)和寬度是圓形

希望它有幫助。

+0

檢查完整問題先生... –

+0

我的三個視圖的比例高度分別爲135,105和240,但是當我重新打開項目時,它變爲160,160和151.那麼,這是默認行爲嗎?嘗試將比例高度分別更改爲135,105和240,並且更改設備並檢查寬度和高度 –

+0

是否要爲視圖修復高度? -------如果是,則將高度約束添加到所有視圖並刪除堆棧視圖的底部約束 -------如果沒有,則將每個視圖的高度設置爲與主視圖相等並相應地改變乘數。 –