gpt4 book ai didi

ios - 根据自动布局更改UILabel中的字体大小(快速)

转载 作者:行者123 更新时间:2023-12-01 18:36:12 28 4
gpt4 key购买 nike

我在UINavigationBar内放置了一个UILabel。
我想根据navigationBar的高度增加该标签的字体大小。当navigationBar很大时,我希望字体大小更大;当滚动并缩小navigationBar时,我希望字体大小减小。

到目前为止,我所拥有的(在viewDidLoad内部):

dateLabel.text = "16. Oktober"
dateLabel.font = .boldSystemFont(ofSize: 40)
dateLabel.adjustsFontSizeToFitWidth = true
dateLabel.minimumScaleFactor = 0.5
dateLabel.backgroundColor = .white
dateLabel.numberOfLines = 1
dateLabel.lineBreakMode = .byTruncatingTail
self.navigationController?.navigationBar.addSubview(dateLabel)


dateLabel.translatesAutoresizingMaskIntoConstraints = false
dateLabel.bottomAnchor.constraint(equalTo: (self.navigationController?.navigationBar.bottomAnchor)!, constant: -16).isActive = true
dateLabel.leadingAnchor.constraint(equalTo: redView.trailingAnchor, constant: 16).isActive = true
dateLabel.widthAnchor.constraint(equalToConstant: 200).isActive = true
dateLabel.topAnchor.constraint(equalTo: (self.navigationController?.navigationBar.topAnchor)!, constant: 16).isActive = true

我设置了约束,以使 dateLabelnavigationBar的高度而收缩(如屏幕截图所示,它正在起作用)。
但是, dateLabel的字体大小不会改变。

屏幕截图显示了滚动时 navigationBar的不同状态。

navigationBar

如何根据 dateLabel的高度减小 navigationBar的字体大小?自动布局有可能吗?

最佳答案

UILabel没有自动减少字体以适合内容大小或高度(仅宽度)的方法。

因此,您应该通过更改大小来手动更改字体(不要忘记使用UILabel而不是NSString.sizeWithFont:测试结果大小:结果会略有不同)。

您可以尝试设置容器的约束以保留UILabel的宽高比。这样,当您减小高度时,宽度也将减小,并且UILabel.adjustsFontSizeToFitWidth会起作用。应该很粗糙,但是对于您来说足够了,并且实现起来更加容易和快捷。

更新

忘了提。我谈到了您的具体例子。行为取决于numberOfLineslineBreakMode。使第一个!= 1和第二个类似.byTruncatingTail(默认值)的内容将显示接近必要的值(例如,当宽度不够时将对单词进行换行,而您根本希望不进行换行)。

关于ios - 根据自动布局更改UILabel中的字体大小(快速),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58408072/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com