Изменение размера шрифта надписи в цикле не меняет размер текста - PullRequest
4 голосов
/ 16 апреля 2019

У меня есть представление с 4 ярлыками, и иногда оно исчезает с экрана.

Чтобы избежать этого, я пытаюсь изменить размер текста метки следующим образом:

while DefinitionAndExampleView.frame.maxY > view.frame.size.height {
    label1.font = UIFont.systemFont(ofSize: (label1.font.pointSize - 1))
    label2.font = UIFont.systemFont(ofSize: (label2.font.pointSize - 1))
    label3.font = UIFont.systemFont(ofSize: (label3.font.pointSize - 1))
    label4.font = UIFont.systemFont(ofSize: (label4.font.pointSize - 1))
}

Тем не менее, этот цикл while продолжает работать и никогда не завершается, потому что размер точки 4 меток не меняется.

Почему размеры точек надписей не меняются?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Вы проверяете maxY из фрейма DefinitonAndExampleView, также есть вероятность, что фреймы только пересчитают его размер после обновления пользовательского интерфейса.Я настоятельно рекомендую вам использовать ограничения в ваших ярлыках, чтобы они не исчезали с экрана.Вы можете следовать официальной документации Apple , чтобы начать работу.

0 голосов
/ 16 апреля 2019

Если вы хотите убедиться, что ваши ярлыки не исчезают с экрана, вы можете установить для AdjustFontSizeToFitWidth значение true.Таким образом, текст вашего ярлыка не исчезнет с экрана, он просто изменит размер.Кроме того, добавьте ограничения для ширины, чтобы ширина метки не расширялась.

label1.adjustsFontSizeToFitWidth = true

...