Для тех, у кого есть такая же проблема, я решил ее, используя UITextView
вместо UILabel
.Это было лучшим решением по двум причинам:
Не требуется никакого специального поведения, чтобы определить, содержит ли текст пробелы, и изменить режим разрыва строки в UILabel
на / изперенос слов / символов.
Что еще более важно, существует крайний случай, когда у вас могут быть нормальные слова (которые вы хотите обернуть по границам слов) плюс очень длинный текст (который вам нужнообернуть границы персонажа).Если не считать какой-то логики для вставки пробела в этот очень длинный текст (в правильной позиции) для принудительной «обтекания поддельным словом», я не вижу способа справиться с переносом слов и символов в зависимости от ситуации,в пределах одного UILabel
.UITextView
автоматически обрабатывает эту ситуацию, нарушая границы слов или символов по мере необходимости.
Для получения дополнительной информации о том, как я это делаю, у меня есть одна строка UITextView
с редактированиеми прокрутка отключена.Я также установил .contentInset
, чтобы убрать заполнение, чтобы оно выглядело (ничего не подозревающему глазу), как UILabel
.Затем я использую метод sizeWithFont:constrainedToSize:lineBreakMode:
для определения рамки отображаемого текста и соответствующим образом настраиваю рамку UITextView
так, чтобы она точно соответствовала тексту.
Надеюсь, что это поможет!