以编程方式按设备调整字体大小

时间:2019-01-10 14:34:37

标签: swift uilabel uifont

我正在尝试更改UILabel的文本,以使每个设备的文本看起来完全相同。

Label texts

在这里,我有4种不同的模拟器:8Plus, 7, 5s, XR按此顺序。如您所见,这些文本看起来有所不同。在第一个模拟中,它比第三个模拟的要小。我如何才能使其缩放并在每个设备上看起来都一样,即文字尊重包装盒的尺寸?

let label = UILabel(frame: button.bounds)
    label.text = "Done"
    label.minimumScaleFactor = 0.2
    label.textAlignment = .center
    label.textColor = .white
    label.font = UIFont(name: label.font.fontName, size: 20)
    label.adjustsFontSizeToFitWidth = true
    label.isUserInteractionEnabled = true

1 个答案:

答案 0 :(得分:1)

  

在第一个模拟中,它小于第三个模拟。

不,不是。这看起来像是因为iPhone 5S(640x1136点)的屏幕比iPhone Xs(1125x2436)的屏幕小。此外,由于背景具有固定的限制条件,因此文本在背景上显得很小,这会导致在所有设备上调整其大小。

为使您的文本在所有屏幕上的背景看起来都相似,您必须将UILabel的顶部,顶部,底部和尾部约束设置为等于超级视图(具有自定义常量)

enter image description here

...然后像您一样,为标签设置minimumScaleFactor

因此,如果将 font size 设置为20,则 maximum 字体大小将为20。如果标签应该较小(由于您设置的限制而没有足够的空间),标签将具有最大可能的字体大小,您将其设置为最小比例因子。