У меня есть небольшая проблема с многострочным UILabel, мой текст UILabel как-то странно начинается с середины и поднимается вверх, когда появляются новые строки, так что последняя строка всегда находится посередине. Я хочу, чтобы он вел себя как обычный текст, начиная сверху и строк, идущих друг под другом, первая строка оставалась сверху. Извините, если я плохо объяснил, я могу попытаться уточнить, если это необходимо! Заранее спасибо!
Вопрос
Создание многострочного UILabel для запуска текста сверху, а не посередине
Ответы
Ответ 1 · рейтинг 11 · Mark Adams
Вы можете использовать метод 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);
Ответ 2 · Srinivasan N
Поскольку метод 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];
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.
Похожие материалы
- Как изменить текст UILabel после его программного создания в цикле
- Как создать сенсорные события для MKMapView?
- [UIImageView _isChargeEnabled]: сообщение отправлено в освобожденный экземпляр
- Как обернуть текст в UITableViewCell без настраиваемой ячейки
- Начинающий разработчик iOS - вставьте UITextView в ячейку UITableView
- Как нарисовать линию с чередующимися цветами в Swift