2009-08-24 4 views
1

У меня есть NSString и хочу поместить его в прямоугольник. Прямоугольник имеет заданный размер, скажем, width = 150 и height = 30. Когда строка короткая и имеет только один символ, она может достигать прямоугольника. Более конкретно: он может иметь большой размер шрифта. Но если строка имеет слишком много символов и будет превышать границы прямоугольника, она должна стать меньше. Более конкретно: размер шрифта должен быть меньше, чтобы он не превышал границы прямоугольника. Есть ли способ сделать это без беспорядка в основной графике?Как поместить строку в прямоугольник?

По какой-то причине UILabel's adjustsFontSizeToFitWidth Property не имеет никакого эффекта. Текст остается маленьким, даже если в нем много места.

Я установил, что

label.adjustsFontSizeToFitWidth = YES; 

но ничего не происходит. Надеюсь, есть еще один способ сделать это ...

+0

Что вы подразумеваете под меньшим? Вы имеете в виду усечение строки? – fbrereto

+0

меньший размер шрифта/без усечения. обновил вопрос более подробно – 2009-08-24 17:03:09

ответ

6

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

Для обоих случаев вы хотите установить UILabelnumberOfLines на 0, что позволяет этикетке обертывать столько, сколько необходимо. Затем вы захотите установить frameUILabel в соответствии с прямоугольником, который вы хотите поместить. Оттуда вы берете один из двух путей:

  • Усечения: Установите lineBreakMode свойство UILineBreakModeClip, UILineBreakModeHeadTruncation, UILineBreakModeTailTruncation или UILineBreakModeMiddleTruncation в зависимости от поведения усечения, который вы ищете.
  • Изменение размера: Установите lineBreakMode либо UILineBreakModeWordWrap, либо `UILineBreakModeCharacterWrap 'в зависимости от ваших предпочтений. Затем вам нужно ввести цикл, чтобы выяснить правильный размер шрифта. Начните с разумным размером шрифта (например, 12) и:
    • Установите font свойство UILabel с UIFont, который соответствует, что размеру
    • Вызова - (void) sizeToFit для UILabel.
    • Проверьте frame для UILabel:
      • Если кадр будет вписываться в пределах вам это нужно, вы сделали
      • Если кадр еще большим, падение размера шрифта и повторить цикл

для последнего варианта вы хотите, чтобы убедиться, что вы не сжимая текст в Лету, так что вы будете в nt, чтобы установить размер шрифта минимального размера.

Дополнительную информацию вы можете получить из документации UILabel и UIFont.

4

adjustsFontSizeToFitWidth регулирует размер шрифта down, не вверх.

Установите шрифт на вашем UILabel на соответствующий большой размер, и UILabel будет сжимать его, если необходимо, чтобы соответствовать его границам.

0
  1. Установите размер шрифта ярлыка в желаемый нормальный размер.
  2. Набор этикеток минимальный размер шрифта для наименьшего возможного шрифта (minimumFontSize собственности)
  3. Установите adjustsFontSizeToFitWidth в YES.

Если вам нужно несколько строк, установите lineCount на 0, как отметил другой плакат.

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