Размер шрифта для устройства программно - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь изменить текст 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 голосов
/ 10 января 2019

На первом моделировании он меньше, чем, скажем, на третьем.

Нет, это не так. Это выглядит так, потому что экран iPhone 5S (640x1136 точек) меньше, чем экран, скажем, iPhone Xs (1125x2436). Кроме того, текст выглядит маленьким на фоне, так как фон имеет фиксированные ограничения, которые вызывают изменение размера на всех устройствах.

Чтобы текст на всех экранах выглядел одинаково на всех экранах, вам нужно установить ограничение UILabel, top, bottom и trailing равное суперпредставлению (с пользовательской константой)

enter image description here

... затем, как вы сделали, установите minimumScaleFactor для своей метки

Итак, если вы установите размер шрифта на 20, тогда максимальный размер шрифта будет равен 20. Если ваша метка должна быть меньше (не будет будет достаточно места из-за установленных ограничений), ваша метка будет иметь максимально большой размер шрифта, который вы установите в качестве минимального масштабного коэффициента.

...