Неверная высота табличного представления с 64-битными устройствами

У меня действительно странная проблема. С 64-битными Устройствами я всегда искажаю неправильную высоту ячейки. На 32-битных устройствах выглядит правильно:

введите описание изображения здесь

На устройствах с 64-битной архитектурой это выглядит так:

введите описание изображения здесь

Это моя функция, и ДА, я изменил ее с float на CGFloat после того, как выпущены 64-битные устройства.

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { GFBlockTableRowItem* row = [self.blockTable.tableRows objectAtIndex:indexPath.row]; CGFloat maxHeight = 0.0f; for (NSUInteger i=0; i<row.tableColumns.count; ++i) { NSString* widthValue = [self.blockTable.tableColWidths objectAtIndex:i]; CGFloat percentage = widthValue.integerValue/100.0f; NSString* string = [row.tableColumns objectAtIndex:i]; CGSize constraint = CGSizeMake(self.frame.size.width*percentage, FLT_MAX); CGSize size = calculateSizeWithInsets(string, self.defaultCellFont, constraint, GTDefaultTableEdgeInsets); maxHeight = MAX(size.height, maxHeight); } LogDebug(@"height %li: %.3f", (long)indexPath.row, maxHeight); return maxHeight; } 

ИЗМЕНИТЬ 1:

 typedef NS_ENUM(NSInteger, GTVerticalTextAlignment) { GTVerticalTextAlignmentTop, GTVerticalTextAlignmentCenter, GTVerticalTextAlignmentBottom }; /**top, left, bottom, right*/ static UIEdgeInsets GTDefaultTableEdgeInsets = {0.0f, 0.0f, 0.0f, 0.0f}; static UIEdgeInsets GTDefaultTextViewEdgeInsets = {8.0f, 4.0f, 8.0f, 4.0f}; CGSize calculateSizeWithInsets(NSString *text,UIFont *font, CGSize size, UIEdgeInsets insets) { // GT_SIZE_CONSTRAINT_NONE CGSize constraint = size; UIEdgeInsets effective = UIEdgeInsetsMake((insets.top + GTDefaultTextViewEdgeInsets.top), (GTDefaultTextViewEdgeInsets.left + insets.left), (insets.bottom + GTDefaultTextViewEdgeInsets.bottom), (GTDefaultTextViewEdgeInsets.right + insets.right)); if (constraint.width != GT_SIZE_CONSTRAINT_NONE) { constraint.width = constraint.width - (effective.left + effective.right); } if (constraint.height != GT_SIZE_CONSTRAINT_NONE) { constraint.height = constraint.height - (effective.top + effective.bottom); } CGSize textSize = calculateSize(text, font, constraint); if (constraint.width == GT_SIZE_CONSTRAINT_NONE) { textSize.width += effective.left + effective.right; } if (constraint.height == GT_SIZE_CONSTRAINT_NONE) { textSize.height += effective.top + effective.bottom; } return textSize; } 

One Solution collect form web for “Неверная высота табличного представления с 64-битными устройствами”

В моем случае ниже использовался метод

 - (float)tableView: (UITableView *)tableView heightForRowAtIndexPath: (NSIndexPath *)indexPath 

вместо этого обновленного метода.

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 

В 64-битной архитектуре float следует заменить на CGFloat .

Interesting Posts

Не вызывать didBecomeActive, если фоновая задача истекает

iOS – не удалось получить ячейку из своего источника данных

Способ загрузки файлов iCloud? Очень смущает?

ios проверить, если nsarray == null

Воспроизведение звука с Apple Watch через iPhone

Каков правильный способ обработки поворотов изображений для iphone / ipad?

Можно ли добавить представление UIViewController к другому представлению UIViewController?

Ошибка основных данных после восстановления стойкого хранилища

UISplitViewController, который не является rootViewController

Xcode 6.3 сработает, когда я переименую проект

ld: Framework не найден для архитектуры i386

UITableView получает Инициализируется в середине viewDidLoad?

Как интегрировать iCloud в приложение без документов?

Swift + CoreData: не может автоматически устанавливать дополнительный атрибут на сгенерированном подклассе NSManagedObject

Загрузите и распакуйте файл в приложении iOS

PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.