Intereting Posts
Objective-C возвращает массив – проблемы с памятью Как проверить, где происходит сбой приложения? ios дважды нажмите кнопку «Главная кнопка» Отображать метки трендов, когда пользователь запускает приложение впервые Swift 3 реагировать на родной ios: geoloc имеет низкую точность по умолчанию создание различных экземпляров контроллера вида из раскадровки с помощью instantiateViewControllerWithIdentifier Создание частного cocoapod, git tag issue Как отформатировать iOS 7 UIPickerView для отображения только 3 вариантов? Т.е. один выше и один ниже активного выбора? Связать CGAffineTransformRotation с CGAffineTransformTranslation Как добавить программный блок слайдов навигации на существующий UiViewController В первом примере RxSwift завершается сбой «Невозможно вызвать« combLatest »с списком аргументов …» Удалить фотографию из синтаксиса Objective-C: Как определить, является ли отправитель UITextField или UISwitch Почему мои методы делегатов никогда не вызывались? Исправить UIView в нижней части экрана без автоматической компоновки

Вычисление для высоты текста является ошибкой на iOS 7

У меня есть фрагмент кода, который вычисляет высоту, которую блок текста будет использовать, и установите uiLabel соответственно:

text = [self tableText:[indexPath row] forIndex:index]; constraint = CGSizeMake(detailWidth, 20000.0f); size = [text sizeWithFont:[UIFont systemFontOfSize:16.0f] constrainedToSize:constraint lineBreakMode:NSLineBreakByWordWrapping]; UILabel *presidentDetailLabel = (UILabel *)[cell viewWithTag:200]; [presidentDetailLabel setFrame:CGRectMake(presidentDetailLabel.frame.origin.x, presidentDetailLabel.frame.origin.y, presidentDetailLabel.frame.size.width, MAX(size.height, presidentDetailLabel.frame.size.height))]; [presidentDetailLabel setText:text]; 

Код отлично работает на iOS 6, но когда я скомпилировал его на iOS 7 и запускал его на эмуляторе. Возвращаемый размер кажется немного коротким. На самом деле у меня есть NSlog, чтобы проверить, будет ли значение fontsize и возвращаемое значение равно 16.

Такая же проблема с аналогичным блоком кода только на этот раз я использую атрибутированную строку, и она все равно возвращает высоту на несколько пикселей. Из того, что я собираю. Кажется, что текст использует пространственный эквивалент размера шрифта 17.

Любые советы по поиску этой ошибки?

Я использую следующие строки в некоторых своих проектах и ​​всегда работаю как прелесть в iOS 5 и выше (не использовал в более низких версиях).

 CGSize constraint = CGSizeMake(label.frame.size.width, 2000.0f); CGSize size; NSStringDrawingContext *context = [[NSStringDrawingContext alloc] init]; CGSize boundingBox = [label.text boundingRectWithSize:constraint options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:label.font} context:context].size; size = CGSizeMake(ceil(boundingBox.width), ceil(boundingBox.height)); [label setFrame:CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, size.height)]; 

Я исправил свою проблему, используя этот код:

 NSString *text = [self tableText:[indexPath row] forIndex:index]; UILabel *presidentDetailLabel = (UILabel *)[cell viewWithTag:200]; [presidentDetailLabel setText:text]; CGSize size = [presidentDetailLabel sizeThatFits:CGSizeMake(presidentDetailLabel.frame.origin.y, 2000)]; [presidentDetailLabel setFrame:CGRectMake(presidentDetailLabel.frame.origin.x, presidentDetailLabel.frame.origin.y, presidentDetailLabel.frame.size.width, size.height)];