[英]autolayout aspect ratio imageview in tableviewcell
我有一個自定義tableViewCell,其中有一個imageView。 這樣的布局:
我想使用自動布局來計算方法中單元格的高度
CGSize size = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
所以我設置了這樣的約束
基本上,這些約束只是將每個元素固定到其superView的邊緣或上方/下方的視圖。
問題是我還要添加一個約束,即imageView的寬高比。 我想設置imageView的高度始終是其寬度的一半。 如果我將寬高比約束直接設置為2:1,則總是會Unable to simultaneously satisfy constraints
錯誤。 我嘗試將優先級更改為高,但仍然沒有運氣。
我可以通過使用自動布局來實現嗎?
您的約束起作用並正確計算自動高度的原因是,所有UI元素都有其自身的固有大小(使之適合其內容的大小)。
因此, imageView
已經具有適合放入您的圖像的大小。 您不能同時使用固有尺寸並指定自己的尺寸(即使您只想更改其中一個尺寸)。
我看到的解決方案是在UIImageView
上設置靜態高度限制,再加上寬度的寬高比。 然后,在代碼中將高度約束的常量設置為image.size.height值。
[self.imageHeightConstraint setConstant:self.imageView.image.size.height];
[self.view layoutIfNeeded];
通過這種方式,您可以保留固有尺寸的一半(僅高度),並獲得自定義寬度。
希望我的解釋有意義。 讓我知道您是否有任何疑問。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.