Altura incorrecta de TableView con dispositivos de 64 bits

Tengo un problema realmente extraño. Con dispositivos de 64 bits siempre genero una altura de celda incorrecta. En los dispositivos de 32 bits se ve así:

introduzca la descripción de la imagen aquí

En dispositivos con architecture de 64 bits, se ve así:

introduzca la descripción de la imagen aquí

Esta es mi function, y SI lo cambié de flotante a CGFloat después de que se lanzaron dispositivos de 64 bits …

-(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; } 

EDIT 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; } 

En mi caso, se estaba utilizando el método siguiente.

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

en lugar de este método actualizado.

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

En la architecture de 64 bits, el flotador debe replacese por CGFloat .