簡體   English   中英

動態UITableViewCell的子視圖中的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM