获取调整后的标签字体大小

Posted

技术标签:

【中文标题】获取调整后的标签字体大小【英文标题】:Get adjusted font size of label 【发布时间】:2019-04-10 19:33:27 【问题描述】:

我有一个标题标签,我正在调整它的字体大小,以适应标签的大小。我想存储该字体大小的值,以便我可以设置一些按钮的字体大小。

我试图只存储标签的 pointSize,但这只是给我未调整的值,而不是实际有效的值。

这样做的原因是,我希望标签和按钮中所有文本的大小在不同大小的 iPad 屏幕上看起来都不错。但我正在努力保持跨多个元素的大小相同。

class ViewController: UIViewController 
    @IBOutlet weak var essenceButton: UIButton!
    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var tribesButton: UIButton!

    @IBOutlet weak var creaturesButton: UIButton!
    @IBOutlet weak var monstersButton: UIButton!
    @IBOutlet weak var musesButton: UIButton!
    @IBOutlet weak var newsletterButton: UIButton!

    override func viewDidLoad() 
        super.viewDidLoad()

        self.titleLabel.adjustsFontSizeToFitWidth = true

        let fontsize = self.titleLabel.font.pointSize

        self.essenceButton.titleLabel?.font = essenceButton.titleLabel?.font.withSize(fontsize)

        self.tribesButton.titleLabel?.font = tribesButton.titleLabel?.font.withSize(fontsize)
    

【问题讨论】:

【参考方案1】:

viewDidLoad(),视图及其子视图(包括标签)还没有为设备屏幕布局,所以标签的字体大小没有改变。

您应该可以在viewWillLayoutSubviews() 中执行此操作:

override func viewWillLayoutSubviews() 
  super.viewWillLayoutSubviews()
  view.layoutIfNeeded()
  // Code to adjust font of the other UI items here

【讨论】:

遗憾的是我仍然得到相同的结果。也试过 viewDidLayoutSubviews();但这似乎也不起作用。 啊,是的。这个***.com/questions/2396715/… 的答案应该对你有所帮助。如果您用于源字体的标签具有动态大小,则在视图布置其子视图后,您仍需要这样做。

以上是关于获取调整后的标签字体大小的主要内容,如果未能解决你的问题,请参考以下文章

查找 UIButton 调整后的字体大小值?

如何根据字符串长度和标签大小调整标签的字体大小

有没有办法让标签的字体大小动态调整到 PyQt5 中标签中的文本?

Swift 3 - 调整字体大小以适应宽度,多行

允许/阻止标签的可访问性字体大小调整

如何根据标签可用的高度调整 UILabel 字体大小