Создание многострочного UILabel для начала текста сверху, а не с середины - PullRequest
5 голосов
/ 04 марта 2011

У меня небольшая проблема с многострочным UILabel, мой текст UILabel, как и начинается с середины, странным образом и увеличивается, когда появляются новые строки, так что последняя строка всегда находится посередине. Я хочу, чтобы он вел себя как обычный текстовый вид, начиная сверху и линиями, идущими друг под другом, первая строка оставаясь сверху. Извините, если я объяснил это плохо, я могу попытаться уточнить, если это необходимо! Заранее спасибо!

Ответы [ 2 ]

11 голосов
/ 04 марта 2011

Вы можете использовать метод sizeWithFont:constrainedToSize:lineBreakMode: на NSString, чтобы определить высоту блока текста с учетом шрифта и ограниченной ширины. Затем вы обновите рамку вашего ярлыка так, чтобы она была достаточно большой, чтобы охватить текст.

CGSize textSize = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:label.lineBreakMode];
label.frame = CGRectMake(20.0f, 20.0f, textSize.width, textSize.height);
0 голосов
/ 07 июля 2015

Поскольку метод sizeWithFont объявлен устаревшим в iOS 7.0 +, вы можете использовать альтернативный метод с именем boundingRectWithSize .

Например:

NSDictionary *attrsDictionary =[NSDictionary dictionaryWithObject:YourFont forKey:NSFontAttributeName];
NSAttributedString *attrString =[[NSAttributedString alloc] initWithString:yourString attributes:attrsDictionary];

textRect = [attrString boundingRectWithSize:yourSize options:NSStringDrawingUsesLineFragmentOrigin context:nil];
...