为什么我不能从代码自动调整 UILabel 的文本,但我可以通过 IB?
Why can't I auto-fit text of a UILabel from code, but I can through the IB?
场景: 我只想在每个目标设备的 UILabel 中放置一个字符串。
也就是说,在一个 iPad 模型上,字符串被截断了。另一方面不是。
我怀疑该应用程序与 IB 相比更以代码为中心。
所以我希望能够以编程方式使用 UILabel。
代码如下:
class ViewController: UIViewController {
@IBOutlet var myLabel: UILabel!
@IBAction func addMessageAction(_ sender: UIBarButtonItem) {
let msg = "Mother had a feeling, I might be too appealing. But I can understand."
myLabel.text = msg
myLabel.numberOfLines = 0
myLabel.adjustsFontForContentSizeCategory = true
myLabel.sizeToFit()
myLabel.lineBreakMode = .byTruncatingTail
myLabel.minimumScaleFactor = 0.5
}
@IBAction func exitAction(_ sender: UIBarButtonItem) {
exit(0)
}
}
这是我按下 'message' 按钮后的屏幕:
这似乎只适用于我在 IB 中设置 UILabel 属性。
为什么它不能通过代码工作?
我试过你的代码,它工作得很好。是否存在任何自动布局约束不匹配?
您可以对此做一件事,更改字体大小以适应标签的宽度
myLabel.adjustsFontSizeToFitWidth = true
Debashish 给了我正确答案。
我添加了他的建议:myLabel.adjustsFontSizeToFitWidth = true
并且它是实时工作的。
有趣的是,我在共享项目中使用了原始代码片段;它奏效了……但在我的小概念验证中却没有。
但同样,添加的 myLabel 属性 语句在这里起到了作用。