ios: текст неправильно переносится на iPhone 5S и более ранних версиях (4 дюйма и меньше)

У меня есть этикетка, которая должна обернуться. Есть 4 ограничения (верх / низ и ведущий / трейлинг - других ограничений нет). Этикетка правильно оборачивается на iPhone 6, то есть на 4,7-дюймовом экране, и на iPhone 6 Plus, то есть на 5,5-дюймовом экране, но обрезается по правому краю на устройствах с экраном 4 дюйма или меньше.

введите описание изображения здесь

Как будто он думает, что доступная ширина больше, чем фактическая ширина устройства. есть идеи? (извините, я не могу разместить изображение в строке, потому что это требует не менее 10 повторений)

FWIW: Вот ограничения на метку (я пишу их в псевдокоде, потому что они установлены в IB).

label.top = top margin
label.bottom = bottom margin
label.leading = leading margin
label.trailing = trailing margin

2 ответа

Решение

Я выяснил, в чем проблема, это label был в клетке типа TextCell и вот что я делал в TextCell "s layoutSubviews метод:

override func layoutSubviews() {
    super.layoutSubviews()

    // ... snip ...

    self.text.preferredMaxLayoutWidth = 375 // This is the offending line
}

+ Изменить preferredMaxLayoutWidth в здравом уме (например, CGRectGetWidth(self.label.frame)) починил это.

Обратите внимание, что вышеизложенное является упрощением проблемы, в том случае, если у вас есть проблемы с самоклейкой этикеткой в ​​Cocoa Touch, всегда проверяйте, preferredMaxLayoutWidth устанавливается на правильное значение

Вот связанный вопрос (указал мне в правильном направлении): UILabel иногда неправильно переносит текст (автоматическая разметка)

В вашей main_storyboard перейдите на нижнюю панель и нажмите Инспектор компактных размеров (или как там его называют) и выберите этот

введите описание изображения здесь

попробуй убрать там все ограничения и добавить их снова

Другие вопросы по тегам