2015-01-27 4 views
-1

Я прочитал этот ответ, как отрегулировать высоту моей этикетки на основе текста метки: Vertically align text to top within a UILabelКак настроить UILabel

Это мой код пытается установить новый текст и настроить ярлык в том же время.

Но я знаю, что высота этикетки никогда не меняется. Он сохраняет значение, установленное в моем файле xib. Я использую инструмент, Спарк, чтобы проверить высоту метки:

-(void) setNewText(NSString *)newText 
{ 
    self.myLabel.text = newText; 
    self.myLabel.numberOfLines = 0; 
    [self.myLabel sizeToFit]; 
    [self setNeedsLayout]; 
} 

Можете ли вы сказать мне, что случилось с моим кодом?

спасибо.

Обновлено:

Я попытался @rdelmar предложение. Установите ограничение ширины для метки и число строк до 0. Высота метки ui настраивается. Но есть дополнительные интервалы до и после первой/последней строки текста.

enter image description here Вот скриншот, который я снял с помощью Spark. Синим прямоугольником является UILabel. Как вы можете видеть, есть дополнительные интервалы до/после первой/последней строки. Как удалить эти интервалы?

+0

Вы используете AutoLayout в своем xib? Если это так, вам нужно настроить константу на ограничение макета. –

ответ

1

Вам не нужно ничего делать в коде, чтобы получить метку, чтобы отрегулировать ее высоту. В xib или раскадровке дайте ограничениям ярлыков установить его положение и дайте ему ограничение фиксированной ширины. Не устанавливайте его высоту. Установите для параметра numberOfLines значение 0, и это все, что вам нужно сделать. Если вы установите текст со строкой, которая слишком длинная, чтобы поместиться в одну строку, метка автоматически настроит ее высоту.

+0

Спасибо. Но какой шириной я должен установить фиксированную ширину? Я хочу, чтобы он хорошо размещался в iPhone 5/6, поэтому ширина метки различна. – n179911

+0

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

+0

Спасибо за помощь. Я попробовал то, что вы предложили: иметь 1 ширину для UILabel. установите количество строк в 0. То есть. Высота метки не изменяется, как вы сказали. Но есть дополнительные интервалы до/после первой и последней строки текста. Я обновил свой вопрос на скриншоте. – n179911

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