#ios #text #uilabel
#iOS #текст #uilabel
Вопрос:
Я должен определить, содержит ли UILabel текст, соответствующий размеру. Я могу использовать boudingRectWithSize:параметры: атрибуты: контекст, но я не могу явно задать номер строки. В устаревшем методе я могу установить только режим разрыва строки. Кто-нибудь знает, как получить размер некоторого текста в метке, если определен номер строки (скажем, label.numberofline = 2)?
Комментарии:
1. Размер текста не зависит от количества строк в ограничивающей UILabel
2. Но UILabel будет использовать numberofline для усечения текста.
Ответ №1:
Легко
CGRect frame = [text boundingRectWithSize:CGSizeMake(label.frame.size.width, MAXFLOAT)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{NSFontAttributeName : label.font}
context:nil];
CGSize size = frame.size;
NSLog(@"Size of frame %@", NSStringFromCGSize(size));
Комментарии:
1. Это неточно, когда numberofline UILabel больше 1. Если высота метки достаточно велика, она может содержать 3 строки, но если значение numberofline равно 2, текст все равно будет усечен, и ваш код не сможет определить это.