Элегантный способ справиться с выравниванием текста UILabel?

Я разрабатываю приложение в iOS 6 и использую Xcode 4.5.2.

У меня есть простой UIView, который содержит некоторый текст в соответствии с локализуемой строкой. Что ж, в зависимости от отображаемого языка меняется количество строк текста. Например, в английском языке есть две строки, а в турецком - всего одна строка.

Я также должен центрировать выравнивание текста. Что ж, прямо сейчас я могу это сделать, но я использую два разных UILabel и устанавливаю их текст вручную. Итак, это не сработает, если я изменю отображаемый язык текста Simple image

So,

1- Как лучше всего решить такую ​​проблему выравнивания?

2- Предположим, что я использую UILabel, хорошо, как я могу создать новую строку, чтобы иметь вывод, как показано на рисунке. Ни один из режимов разрыва строки не работает. Тот же вопрос, если я использую UITextView?

заранее спасибо


person limon    schedule 21.01.2013    source источник
comment
как насчет использования многострочной метки?   -  person Anoop Vaidya    schedule 21.01.2013
comment
@AKV, нет, это не работает, потому что оно не предсказывает, когда переходить на новую строку.   -  person limon    schedule 21.01.2013
comment
что такого в UIWebView с локализованным HTML контентом?   -  person holex    schedule 21.01.2013


Ответы (2)


Делай это

  1. Установите номер строки на 0.
  2. Сделайте центр выравнивания текста.
  3. Вставьте символ \n в строку в том месте, где вы хотите разбить строку.
  4. Обязательно установите ширину вашего UILabel.

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

person Inder Kumar Rathore    schedule 21.01.2013

Пробовали ли вы использовать метод экземпляра UILabel textRectForBounds:limitedToNumberOfLines:

Из документации:

Значение 0 указывает, что максимальное количество строк не ограничено и что прямоугольник должен охватывать весь текст.

person jhilgert00    schedule 21.01.2013
comment
Как я могу сказать UILabel передать новую строку? - person limon; 21.01.2013
comment
[myLabel setNumberOfLines: 0]; - person jhilgert00; 21.01.2013
comment
Прямо сейчас, если вы перетащили метку на свое представление в раскадровке, она, скорее всего, будет равна 1. - person jhilgert00; 21.01.2013