获取动态UILabel的高度

Posted

技术标签:

【中文标题】获取动态UILabel的高度【英文标题】:Get dynamic UILabel's height 【发布时间】:2014-11-22 16:43:21 【问题描述】:

我想了解名为descriptionTextUILabel 的高度。我可以用下面的代码记录它,但问题是它不是我想要的数据。它只是具有 1 行的基本标签的大小,而文本有 3 行(或更多)行。我正在使用自动布局并且它可以工作,我可以显示具有动态高度的文本,但由于另一个错误,我需要知道它的真实高度。

这是我给出标签基本高度的尝试:

- (void)viewDidLoad 

      [super viewDidLoad];
      NSLog(@" description height = %f", self.descriptionText.frame.size.height); 

是否有可能以某种方式获得已在屏幕上呈现的UILabel 的真实高度?

作为替代方案,我可以使用行数计算所需的值。

【问题讨论】:

你把这个电话放在哪里? @sha 对不起,我忘记了。我在 viewDidLoad 中使用它 viewWillAppear:中检查标签的大小。 viewDidLayoutSubviews 不幸的是viewWillAppear: 没有帮助,但viewDidLayoutSubviews 似乎不错。谢谢 【参考方案1】:

您可能意识到viewDidLoad 不是放置日志的正确位置。viewDidLoad 在视图加载到内存后调用,但尚未执行布局,因此标签的框架反映了最初在故事板文件。

如果您想在布局完成后检查框架,您需要覆盖viewDidLayoutSubviews,它将在布局完成并设置所有框架后调用。

【讨论】:

以上是关于获取动态UILabel的高度的主要内容,如果未能解决你的问题,请参考以下文章

如何动态计算 UILabel 高度 [重复]

如何使动态高度 UILabel 将其他元素推开?

UILabel 动态高度和 UIImageView 恒定高度

根据内容动态改变UILabel的高度

iPhone:如何通过 UILabel 内容高度更改行高

约束 UIImageView 高度以尊重 UITableViewCell 中的动态 UILabel 高度