gpt4 book ai didi

ios - UITableViewCell : get the exact width of UILabel in cell

转载 作者:行者123 更新时间:2023-11-30 13:34:22 24 4
gpt4 key购买 nike

我在自定义单元格中获取标签的正确宽度时遇到问题。这是我在 Storyboard中的单元格: cell in storyboard

当创建表格时,我知道当调用 cellForRowAtIndexPath 时,单元格刚刚创建,尚未添加到 UITableView 中,因此标签的宽度为 304px。这会导致如下结果:

Wrong result

滚动后,单元格已添加到 UITableView 中,因此可以正确显示,标签宽度为 164px。

Correct result

在将单元格/标签添加到 UITableView 之前,有什么方法可以知道单元格/标签的确切宽度吗?

标签上的约束:前导、尾随、顶部和高度 enter image description here

下面是源代码:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: ArticleCell = tableView.dequeueReusableCellWithIdentifier("articleCell", forIndexPath: indexPath) as! ArticleCell
let item = array.objectAtIndex(indexPath.row) as! Article
cell.showDataForArticle(item, dateFormatter: dateFormatter)
return cell
}

func showDataForArticle(article: Article, dateFormatter: NSDateFormatter) {
self.titleLbl.text = article.articleTitle
titleHeightConstraint.constant = titleLbl.requiredHeight() <--- where problem happens

self.thumbnailImgView.imageLink(article.articleThumbnailLink!)
self.authorLbl.text = article.articleCreator
self.dateLbl.text = dateFormatter.stringFromDate(article.articlePubDate!)
}


extension UILabel {
func requiredHeight() -> CGFloat {
let frame = CGRectMake(0, 0, self.frame.size.width, CGFloat.max)
let label: UILabel = UILabel(frame: frame)
label.numberOfLines = 0
label.lineBreakMode = .ByWordWrapping
label.font = self.font
label.text = self.text
label.sizeToFit()

return label.frame.size.height
}

最佳答案

就试图获取标签的宽度而言,您是否尝试过单独的行

self.YourLabelName.bounds.width

关于ios - UITableViewCell : get the exact width of UILabel in cell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36249764/

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