Как я могу вычислить количество строк UILabel с фиксированной шириной и заданным текстом?
Как я могу вычислить количество строк UILabel с фиксированной шириной?
Ответ 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. Учитывая этот размер, вы можете изменить размер метки, чтобы отобразить всю строку.