UILabel sizeThatFits为不同的设备返回不同的值。为什么?

时间:2015-03-20 09:35:20

标签: swift

在我的快速项目中,我需要调整UILabel的大小以适应文本。我使用sizeThatFits来计算大小。然而,这些设备的结果差别很大。宽度限制在280点。对于iPhone 5 / s,高度计算为19,但对于iPhone 4s,它是115. iPhone 6+确定它应该更多。

这是整个代码段。为了测试,我使用了固定宽度而不是计算值。标签设置为故事板中其超级视图的完整大小。这就是我改变底部约束来进行大小调整的原因。知道为什么不同的设备即使宽度设置为相同的值也会得到不同的值?

 var bounds = UIScreen.mainScreen().bounds

 let attrStr = self.infoLabel.attributedText
 var width = bounds.width - 40

 let size = self.infoLabel.sizeThatFits(CGSizeMake(bounds.width - 40, bounds.height))
 let delta = (self.infoLabel.frame.size.height) - size.height
 bottomConstaint.constant += delta

1 个答案:

答案 0 :(得分:0)

使用self.view.bounds而不是UIDevice.mainScreen()。bounds,并将其从viewWillAppear移动到viewDidLayoutSubviews,并为所有设备获得了完美的结果。