我有一個UITableView單元格包含UILabel。 UILabel有一個自定義的UIEdgeInset。我劃分子類的UILabel和這樣設置UIEdgeInsets:UILabel與自定義UIEdgeInsets截斷UITableViewCell
override func drawText(in rect: CGRect) {
super.drawText(in: UIEdgeInsetsInsetRect(rect, insets))
}
override var intrinsicContentSize: CGSize {
var contentSize = super.intrinsicContentSize
contentSize.width += leftInset + rightInset
contentSize.height += topInset + bottomInset
return contentSize
}
但標籤被截斷,有時當我在的UILabel多行。 我已經將行高配置爲UITableViewAutomaticDimension並設置了估計的行高。約束也很好。 這個問題似乎是當我設置UIEdgeInsets,因爲它工作正常,如果我不定製它。
也許我應該告訴細胞在設置插入之後更新約束,但是我目前無法做到這一點。
在故事板中添加的約束。 Bottom
,Top
,Leading
和Trailing
與superview(UITableViewCell)有關。所有常數設置爲0。
在cellForRowAtIndexPath
的代碼如下:
let cell = tableView.dequeueReusableCell(withIdentifier: "AnswersCell", for: indexPath) as! AnswerCell
cell.answerLabel.text = alternatives[indexPath.row]
return cell
盧卡斯,你說的標籤只能被截斷當您在標籤多行?截斷我假設你的意思是細胞分隔器水平切斷 - 即單元格沒有正確擴展以容納標籤中的額外行。那是對的嗎? –
您的標籤子類對於自我尺寸表格視圖單元格的行爲正確,因此您可能希望共享您用於設置表格視圖單元格和子視圖的代碼。 – jamesk
@thecloud_of_unknowing是的,字符串不適合視圖。當我有多條線時,它不會一直髮生。它似乎沒有考慮我設置的新UIEdgeInsets。所以在某些情況下它可以很好地適用,但其他的可能會被截斷,因爲它預計會留下更多的寬度空間。 –