2017-01-20 13 views
0

У меня есть два UILabels, которые мне нужно отрегулировать размер шрифта, чтобы правильно поместить текст (а именно в более мелкие старые устройства).Отрегулируйте размер шрифта UILabel без .adjustsFontForContentSizeCategory

Это было бы легко решить с .adjustsFontSizeToFitWidth собственности, но дело в том, что, как и UILabels находятся рядом друг с другом и передают подобную информацию, я хочу, чтобы они имели один и тот же размер шрифта (и adjustsFontSizeToFitWidth будет регулировать их независимо друг от друга).

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

image

Любые идеи о том, как это сделать? Обе эти метки являются многострочными (2 строки), и они всегда имеют одинаковый размер.

Заранее спасибо.

+0

сообщение скриншот. –

+0

Знаете ли вы на forehand, какой из двух будет нужен самый маленький шрифт? что облегчило бы – Eric

+0

@AdilSoomro здесь http://imgur.com/a/5KShO –

ответ

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 
    } 
+0

Первоначально я думал об этом, но похоже, что свойство fontSize остается неизменным, несмотря на любое изменение размера шрифта! –

0

Вы могли бы сделать @ ответ Уилла все короче с помощью функции min:

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 
+0

В первую очередь спасибо за ответ Эрик! Однако это не сработало. Поскольку я подозревал, что pointSize остается тем же, несмотря на визуальное изменение размера. –

+0

fontSizeOne: 20.0 fontSizeTwo: 20.0 –

+0

Кажется, очень сложно получить фактический размер шрифта, возможно [этот столбец переполнения] (http://stackoverflow.com/questions/34622503/when-do-adjustsfontsizetofitwidth-or -boundingrectwithsize-change-the-context-act) может вам помочь? – Eric

 Смежные вопросы

  • Нет связанных вопросов^_^