【问题标题】:How to calculate the height of a UILabel?如何计算 UILabel 的高度?
【发布时间】:2018-01-11 03:36:29
【问题描述】:

我正在尝试根据 UILabel 的高度设置 UITableViewCell 的高度。
我的问题类似于this one
但是该答案中的 OC 代码现在似乎已被弃用(我不确定,只是找不到)。
我正在使用以下代码来计算标签的高度。

extension String {
    // the length of text in one line
    func size(ofFont font: UIFont) {
        return (self as NSString).size(attributes: [NSFontAttributeName: font])
}

cellForRow: 方法中:

let size = text.size(ofFont: font)
let height = ceil(size.width/(UIScreen.main.bounds.width))*size.height

但如果最后一个单词太长而无法在一行中显示,则需要额外的换行。
所以,问题来了。
感谢您的任何建议。

【问题讨论】:

  • 更好地使用自动尺寸。
  • 为什么不使用动态单元格大小?
  • 你可以设置约束真的很简单
  • 参见此处:stackoverflow.com/a/43535950/6479530,将文本视图替换为 UILabellabel.numberOfLines = 0
  • @RAJAMOHAN-S 有帮助,谢谢。

标签: ios swift uitableview uilabel core-text


【解决方案1】:

在 Swift 3 中

设置BackgroundView约束,例如leading, trailing,top,bottom,请显示图片。

设置 UILabel 约束,例如 leading, trailing, top, bottom

并设置它的属性 numberOfLines = 0

然后你的 viewController 类的 ViewDidLoad 方法编写这段代码。

override func viewDidLoad() {
        super.viewDidLoad()
        //dynamic tablview
        yourTablview.estimatedRowHeight = 83.0
        yourTablview.rowHeight = UITableViewAutomaticDimension
    }

我希望它对你有用。

【讨论】:

  • 我的回答很有帮助,请投赞成票
  • 谢谢,我已经给标签设置了约束。 UITableViewAutomaticDimension 就是我所需要的。再次感谢您的详细回答。
  • 我遇到了新问题,需要您的帮助。如果我设置 UITableViewAutomaticDimension,集合视图的高度将为 0。如果我为单元格设置固定高度,则集合视图效果很好。集合视图从故事板初始化并在自定义的 TableViewCell 中设置。
【解决方案2】:

你应该使用UITableViewAutomaticDimension

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 140

你还应该设置numberOfLines

cell.label.numberOfLines = 0

别忘了在所有方面都设置约束

【讨论】:

  • 谢谢,UITableViewAutomaticDimension 就是我所需要的。
  • 我遇到了一个新问题,需要您的帮助。如果我设置 UITableViewAutomaticDimension,集合视图的高度将为 0。如果我为单元格设置固定高度,则集合视图效果很好。集合视图从情节提要初始化并在自定义的 TableViewCell 中设置。谢谢。
  • @CallOfOrange 让我们在the chat解决这个问题
猜你喜欢
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多