![](/img/trans.png)
[英]Dynamic height of UITableViewCell with variable number of subviews with autoLayout
[英]AutoLayout issue in dynamic UITableViewCell's subviews
盡管我似乎已在情節提要的UIView上設置視圖約束的要點,但我似乎無法弄清楚為什么約束在動態單元格原型ContentView的子視圖中無法正常工作。
該單元格非常簡單:填充整個單元格的UIImageView背景,在其前面有另一個UIImage和一個標簽,如下所示:
后台UIImageView具有以下4個約束:0固定為:超級視圖的尾部,底部,頂部和前導空間
個人資料圖片具有固定的寬度和高度,以及領先的超級視圖具有恆定的13pts空間,並且在容器中具有垂直中心
標簽在個人資料圖片的開頭有8pt的空間,在預覽時有尾隨的空間,並且在容器中具有垂直中心。
這就是我得到的:
我錯過了什么? 我研究了這個問題,但沒有答案解決了這個問題。 但是,我嘗試在加載單元格后在cellForRowAtIndexPath中添加以下行:
cell.setNeedsUpdateConstraints()
cell.updateConstraintsIfNeeded()
在運行時出現以下錯誤:
無法同時滿足約束條件。 以下列表中至少有一個約束是您不想要的約束。 嘗試以下操作:(1)查看每個約束,並嘗試找出不期望的約束; (2)查找添加了一個或多個不必要約束的代碼並進行修復。 (注意:如果看到的是您不了解的NSAutoresizingMaskLayoutConstraints,請參閱有關UIView屬性translationsAutoresizingMaskIntoConstraints的文檔)
(
“ NSLayoutConstraint:0x7fe5434852c0 H:[UIImageView:0x7fe543484450(75)]”,“ NSLayoutConstraint:0x7fe5436c5cd0 H:|-(12)-[UIImageView:0x7fe543484450](名稱:'|':UITableViewCellContentView:0x7fe5434820NS5” 5Con5e5,“ H:[UILabel:0x7fe543487430'Joseph']-(8)-|(名稱:'|':UITableViewCellContentView:0x7fe5434820f0)“,” NSLayoutConstraint:0x7fe5436bcca0 H:[UIImageView:0x7fe543484450]-(8)-[UILabel:0x7fe543487約瑟夫']“,” NSLayoutConstraint:0x7fe5436cb110'UIView-Encapsulated-Layout-Width'H:[UITableViewCellContentView:0x7fe5434820f0(0)]“)將嘗試通過打破約束來恢復NSLayoutConstraint:0x7fe5434852c0 H:[UIImageView:0x7fe543484450(75)]
在UIViewAlertForUnsatisfiableConstraints上創建一個符號斷點,以在調試器中捕獲該斷點。 UIKit / UIView.h中列出的UIView上的UIConstraintBasedLayoutDebugging類別中的方法也可能會有所幫助。
有什么線索嗎?
好吧,問題是重中之重。
您有背景圖片,該背景圖片根據您放入的圖片的大小而有所不同,然后是一幅輪廓圖片,該圖片的高度固定,頂部和底部的間距恆定為13pts。
表可能有分隔符,並且正在添加額外的空間。
因此建議:將底部13個點降低例如從1000限制為750。應該刪除警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.