Как вписать строку в прямоугольник? - PullRequest
1 голос
/ 24 августа 2009

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

По какой-то причине свойство AdjustmentsFontSizeToFitWidth UILabel не действует Текст продолжает быть маленьким, даже если есть много места.

Я установил это на

label.adjustsFontSizeToFitWidth = YES;

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

Ответы [ 3 ]

6 голосов
/ 24 августа 2009

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

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

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

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

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

4 голосов
/ 24 августа 2009

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...