2013-03-01 3 views

ответ

38

Этот код предполагает, что label имеет нужный текст, и его рамка уже установлена ​​на нужную ширину.

- (int)lineCountForLabel:(UILabel *)label { 
    CGSize constrain = CGSizeMake(label.bounds.size.width, FLT_MAX); 
    CGSize size = [label.text sizeWithFont:label.font constrainedToSize:constrain lineBreakMode:UILineBreakModeWordWrap]; 

    return ceil(size.height/label.font.lineHeight); 
} 

Update:

Если все, что вы хотите, чтобы определить требуемую высоту этикетки на основе его текста и текущей ширины, то изменить это:

- (CGSize)sizeForLabel:(UILabel *)label { 
    CGSize constrain = CGSizeMake(label.bounds.size.width, FLT_MAX); 
    CGSize size = [label.text sizeWithFont:label.font constrainedToSize:constrain lineBreakMode:UILineBreakModeWordWrap]; 

    return size; 
} 

Возвращенный size - это правильная ширина и высота, чтобы содержать этикетку.

+0

Ваш вопрос задал вопрос о вычислении количества строк. Вы говорите, что действительно хотите необходимую высоту (в точках)? – rmaddy

+0

как вы написали количество строк равно высоте, деленной на строкуHeight. Я действительно хотел узнать количество строк, чтобы вычислить правильную высоту для моей метки, сохраняя фиксированную ширину. – Alexis

+0

На самом деле ваше решение работает хорошо. Благодаря! – Alexis

4

Сначала получите высоту этикетки от размера этикетки с использованием constrainedSize

CGSize labelSize = [label.text sizeWithFont:label.font 
          constrainedToSize:label.frame.size 
           lineBreakMode:UILineBreakModeWordWrap]; 
CGFloat labelHeight = labelSize.height; 

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

CGSize sizeOfText = [label.text sizeWithFont:label.font 
         constrainedToSize:label.frame.size 
          lineBreakMode:UILineBreakModeWordWrap]; 
int numberOfLines = sizeOfText.height/label.font.pointSize; 
+0

как я могу исправить ширину? – Alexis

+0

Разделение на fontSize отлично, спасибо. –

+2

устарел в iOS 7 –

-1

Вы можете вычислить высоту по вертикали, необходимой для отображения строки с помощью sizeWithFont: constrainedToSize: метода на NSString. Учитывая этот размер, вы можете изменить размер метки, чтобы отобразить всю строку.

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