在我的快速项目中,我需要调整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
答案 0 :(得分:0)
使用self.view.bounds而不是UIDevice.mainScreen()。bounds,并将其从viewWillAppear移动到viewDidLayoutSubviews,并为所有设备获得了完美的结果。