ScrollView中的UILabel sizeToFit

Posted

技术标签:

【中文标题】ScrollView中的UILabel sizeToFit【英文标题】:UILabel sizeToFit in ScrollView 【发布时间】:2016-05-30 22:02:56 【问题描述】:

我在 ScrollView 中遇到了 UILabel 的奇怪行为。我正在为 UILabel 分配动态文本并使用 sizeToFit,我可以记录分配文本后似乎正确更改的新大小,但我无法在模拟器和真实设备中看到更改后的大小。这是分配前和分配文本后的日志

--txt Frame 15, 325, 291, 36
--txt Frame1 15, 296, 291, 446.5

如您所见,虽然我在设备和模拟器上看不到变化,但尺寸(高度)发生了变化。请帮忙。

【问题讨论】:

【参考方案1】:

尝试在 sizeToFit() 之后添加这个

    self.view.setNeedsLayout()
    self.view.layoutIfNeeded()

override func viewWillLayoutSubviews() self.myLabel.layoutIfNeeded()

【讨论】:

【参考方案2】:

在使用sizeToFit 方法之前,您是否为该标签设置了numberOfLines 属性。

可能也是这个问题的原因。

可能是标签框架发生了变化,但标签的numberOfLines 属性设置为 1,因此它只显示 1 行。

尝试在使用sizeToFit方法之前设置行数属性,比如

label.numberOfLines = 0;
[label sizeToFit];

这将为标签中任意数量的行设置所有文本。 希望对您有所帮助。

【讨论】:

我已经这样做了,但仍然无法正常工作。谢谢你的回答【参考方案3】:

在尝试了不同的方法后,我最终自己在 IB 中手动扩展了 contentView 的高度。它不是最优雅的解决方案,但它现在可以工作:(

【讨论】:

以上是关于ScrollView中的UILabel sizeToFit的主要内容,如果未能解决你的问题,请参考以下文章

UILabel 使用 ScrollView 后视图底部不需要的空间

UITextView 和 UILabel 子视图属性为零

ScrollView 中的 IBOutlet 产生 nil

ScrollView中的IBOutlet生成为零

限制 UIScrollView 内的 UILabel 的高度

UIScrollView 中的 Swift-Xcode UILabel