2017-10-14 51 views
1

我有單元格包含單個圖像視圖。它的成本如何:left(12)top(12)right(12)bot(12)。如何使方形圖像查看自動佈局

它可以,但我想要的是,保存偏移量(也許擺脫底部偏移量),但添加像高度=寬度的約束,所以圖像將永遠是方形的,但是,將永遠有左上角,右偏移量等於12.

當我添加高度=寬度約束圖像沒有顯示。 圖像是從網上下載,所以它不是即時可用。 如何解決它?

+0

如果你想要一個使用IB的方形視圖,這裏是我去年3月給出的答案(所以它是Swift 3)以及相關的Git回購。 https://stackoverflow.com/questions/42860324/autolayout-contraints-for-a-view-from-xib/42861232#42861232訣竅它(a)設置1:1的一個方面,以及(2)設置*兩個*限制邊緣高度/寬度偏移與不同的優先級。 – dfd

+0

單獨的評論:如果你的問題是如何在代碼中做一個正方形的視圖,我可以給你一個單獨的Swift 4答案使用佈局錨點。它基本上是相同類型的策略。 – dfd

回答

3

步驟1:選擇View和添加4個約束:TopLeftRightAspect Ratio

enter image description here

步驟2:選擇視圖的aspect constraint(例如: - X : Y

enter image description here

第3步:設置乘數1:1,你們都設置了!

enter image description here

+0

不幸的是它沒有工作,它顯示細胞假設是「灰色」rectange,它說 - 只警告一次:檢測約束含糊不清地表明tableview單元格的內容視圖的高度爲零的情況。我們正在考慮無意的崩潰並使用標準高度。 –

1

你的約束似乎罰款。羅伊的答案也是正確的(儘管它在橫向模式下效果不佳,因爲圖像視圖將在保持頂部,左側和右側邊距的同時嘗試將寬度與高度相匹配,因此圖像視圖會在屏幕外繪製)。但是你仍然會得到意想不到的結果,因爲你已經設置了ImageView的約束條件,通過下載獲取它的圖像。因此,圖像視圖的內在內容大小由運行時的圖像大小來定義。

你可以在這裏做的是強制你的imageview不要超過它的邊界。您可以通過在界面生成器中勾選「Clip To Bounds」來完成此操作。