2013-10-03 1 views
0

У меня проблема с UILabels, которая содержит текст, который распространяется на несколько строк. Он вложен в полноэкранном режиме UIView, который имеет autoresizing маску, а также:UILabel с несколькими строками и автомасштабирующими масками (UIViewAutoresizingMask)

view.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth; 

Я хотел бы добавить autoresizingMask на этикетке

label.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth; 

Но проблема, это не работает, как я Мне нравится работать. Если я это сделаю, после поворота экрана (который изменяет размер представления) метка имеет меньшую высоту, а часть текста обрезается. (Он не отображает весь текст). Если я не добавлю UIViewAutoresizingFlexibleHeight, тогда надпись после вращения имеет большие разрывы выше и под текстом (И я этого не хочу).

Я также попытался добавить UIViewAutoresizingFlexibleBottomMargin, но это не поможет, так как пока не отображается весь текст.

EDIT: Я действительно не думаю, Маски автоматического изменения собирается решать эту проблему -> маски автоматического изменения размер вида в зависимости от изменения размера в надтаблицах. Вот почему высота не соответствует тексту. Единственное решение, о котором я мог подумать, - это перезагрузка кадра UILabel после изменения размера супервизора. Если я ошибаюсь, я бы с радостью исправился.

ответ

0
self.label.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin; 
    self.label.numberOfLines = 10; 
+0

спасибо за ваш вклад. К сожалению, этот код не работал для меня. Более того, я не знаю, сколько строк будет иметь текст -> если устройство находится в портретной ориентации, оно будет распространено на большее количество строк, потому что линии будут более узкими. Если устройство находится в ландшафтном режиме, линии длиннее, что требует меньше строк. – Lukas1

0

Не можете ли вы использовать метод fitToSize (или любой из версий) на этикетке? Только не забудьте установить количество строк на 0.

self.label.numberOfLines = 0; 
[self.label fitToSize]; 

EDIT: Это [self.label sizeToFit];

+0

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

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

  • Нет связанных вопросов^_^