我面临的问题是,尽管我正在使用自动换行,UILabel
会在单词中间断行。
您可以创建一个新项目并替换视图控制器的内容以查看结果:
override func viewDidLoad() {
super.viewDidLoad()
let label = UILabel(frame: CGRect(x: 0.0, y: 0.0, width: 100.0, height: 100.0))
label.center = CGPoint(x: view.frame.midX, y: view.bounds.midY)
label.numberOfLines = 2 // Setting this to 1 produces expected result
label.lineBreakMode = .byWordWrapping
label.adjustsFontSizeToFitWidth = true
label.minimumScaleFactor = 0.5
view.addSubview(label)
label.text = "Singlewordtext"
label.backgroundColor = .red
}
这将产生两行文字,该文字在单词中间被打断。这种情况自然发生的原因是,单词本身比标签本身宽,因此很有意义(我想)。但我希望它在使用之前先使用adjustsFontSizeToFitWidth
和minimumScaleFactor
。如果将其设置为单行(label.numberOfLines = 1
),则会得到预期的结果,即文本将缩小而不是折断。请注意,在这种情况下,这样做会适合标签内的所有文本。
问题是,UILabel
上是否有配置可以防止这种情况下的换行?还是有其他一些优雅的解决方案?
当前结果:
所需结果(使用label.numberOfLines = 1
产生):
请注意,我仍然需要启用2行才能很好地显示例如label.text = "Three words fit"
。