gpt4 book ai didi

ios - 带有自定义 UIEdgeInsets 的 UILabel 在 UITableViewCell 中截断

转载 作者:搜寻专家 更新时间:2023-10-30 21:59:20 25 4
gpt4 key购买 nike

我有一个 UITableView,其单元格包含一个 UILabel。UILabel 有一个自定义的 UIEdgeInset。我将 UILabel 子类化并像这样设置 UIEdgeInsets:

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 并设置了 estimatedRowHeight。约束也很好。问题似乎出在我设置 UIEdgeInsets 时,因为如果我不对其进行自定义,它就可以正常工作。

可能我应该告诉单元格在设置插图后更新约束,但到目前为止我不能这样做。

Storyboard中添加的约束。 BottomTopLeadingTrailing 与父 View (UITableViewCell) 相关。所有常量设置为 0。

cellForRowAtIndexPath中的代码如下:

let cell = tableView.dequeueReusableCell(withIdentifier: "AnswersCell", for: indexPath) as! AnswerCell  
cell.answerLabel.text = alternatives[indexPath.row]
return cell

最佳答案

从 Storyboard的属性检查器部分设置 UILable 的这两个属性

  1. 行到 0
  2. 换行到自动换行

或者您也可以通过代码设置这些属性。

self.answerLabel.numberOfLines = 0
self.answerLabel.lineBreakMode = .byWordWrapping

并将下面的代码放在你的 UILable 的子类中

class CustomLabel: UILabel {

@IBInspectable var topInset: CGFloat = 5.0
@IBInspectable var bottomInset: CGFloat = 5.0
@IBInspectable var leftInset: CGFloat = 20.0
@IBInspectable var rightInset: CGFloat = 5.0

override func drawText(in rect: CGRect) {
let insets = UIEdgeInsets(top: topInset, left: leftInset, bottom: bottomInset, right: rightInset)
super.drawText(in: UIEdgeInsetsInsetRect(rect, insets))
}

override var intrinsicContentSize: CGSize {
get {
var contentSize = super.intrinsicContentSize
contentSize.height += topInset + bottomInset
contentSize.width += leftInset + rightInset
return contentSize
}
}

试试这个。

希望它对你有用..

关于ios - 带有自定义 UIEdgeInsets 的 UILabel 在 UITableViewCell 中截断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41753078/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com