调整UILabel字体大小而不使用.adjustsFontForContentSizeCategory

时间:2017-01-20 15:18:34

标签: ios swift cocoa-touch uilabel

我有两个UILabel,我需要调整字体大小才能正确适合文本(即在较小的旧设备中)。

使用.adjustsFontSizeToFitWidth属性很容易解决这个问题,但事实是,因为UILabels彼此靠近并传达类似的信息,我希望它们具有相同的字体大小(和{ {1}}将独立调整它们。

所以,我想要做的就是以某种方式(这是我需要帮助的地方)计算两个标签需要的字体大小,并在两者上使用最小的字体。

image

关于如何做到这一点的任何想法?两个标签都是多行(2行),并且它们总是具有相同的大小。

提前致谢。

2 个答案:

答案 0 :(得分:0)

你可以做的是将.adjustsFontSizeToFitWidth属性设为true,获取最小的字体,然后比较两个宽度并将两者的宽度设置为最小的宽度。伪代码中的示例:

.adjustsFontSizeToFitWidth = true
var fontSizeOne = labelOne.fontSize
var fontSizeTwo = labelTwo.fontSize

if(fontSizeOne < fontSizeTwo)
  {
    labelTwo.fontSize = labelOne.fontSize
  }
else
  {
    labelOne.fontSize = labelTwo.fontSize
  }

答案 1 :(得分:0)

使用min函数可以缩短@ Will的答案:

    labelOne.adjustsFontSizeToFitWidth = true 
    labelTwo.adjustFontSizeToFitWidth = true

    var fontSizeOne = labelOne.font.pointSize
    var fontSizeTwo = labelTwo.font.pointSize

    var min = min(fontSizeOne, fontSizeTwo)
    labelOne.font = UIFont.systemFont(ofSize: min))
    labelTwo.font = labelOne.font