Intereting Posts
UITableView stick tableHeaderView и sectionHeaderView вместе сверху Новое для быстрого: почему таймер не обновляется до UILabel? ABMultiValueIdentifier был установлен неправильно в ABPeoplePickerNavigationControllerDelegate, ошибка iOS? Как изменить название элемента кнопки «Назад»? IOS8 получает доступный список Wi-Fi Xamarin.Forms ContentPage.BackgroundImage (разрешено с помощью Xamarin) Невозможно преобразовать значение типа FBSDKGraphRequestHandler iOS Couchbase: общий менеджер CBL между расширением приложения и приложения Делегаты DataSource от UIPageViewController получают вызов 2 раза непрерывно для одного прохода Попытка создания нескольких видов из одного файла XIB программно изменение размера миниатюры от MPMoviePlayerController Как изменить цвет фона UIButton при быстром нажатии? Доступ nsindexpath к свойству row to section вызывает SIGABRT? Просмотр контроллера, не показывающего содержимого UITextView вызывает сбой приложения при вызове функции startFirstRender

Вычисление для высоты текста является ошибкой на 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)];