Подтвердить что ты не робот

Как я могу вычислить количество строк UILabel с фиксированной шириной?

Как я могу вычислить количество строк UILabel с фиксированной шириной и заданным текстом?

4b9b3361

Ответ 1

Этот код предполагает, что 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);
}

Обновление

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

- (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 - это правильная ширина и высота, чтобы содержать метку.

Ответ 2

Сначала получите высоту метки с размера метки с помощью 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;

Ответ 3

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