¿Cómo uso las celdas de networkingimensionamiento automático de iOS sin especificar la altura de fila estimada?

Quiero aprovechar el layout automático cuidando las alturas de mi celda automáticamente en iOS 8, pero no me gusta cómo las alturas de filas estimadas hacen que el desplazamiento (saltos, position de desplazamiento impnetworkingecible, etc.).

¿Hay alguna manera de no utilizar la estimación para que la vista de tabla precalcule todas las alturas de las filas como lo hizo antes de iOS 7 (no demasiadas celdas, por lo que no es un problema de performance) sino que utiliza el cálculo automático de alturas de iOS 8?

Solutions Collecting From Web of "¿Cómo uso las celdas de networkingimensionamiento automático de iOS sin especificar la altura de fila estimada?"

Editar:

No hay forma de usar el tamaño dynamic sin usar esta propiedad. estimatedRowHeight le dice al sistema que use un tamaño dynamic, suponiendo que usó el layout Automático en su celda.

Mire el video 226 de WWDC 2014.

//

Muy simple: cree su celda de prototipo en el Storyboard, agregue restricciones a la parte superior / inferior de la vista de supervisión (también conocida como la vista de contenido de celda), lo que significa que las subvistas tienen restricciones superiores / inferiores que "empujarán" el tamaño de celda cuando sea necesario.

Haga que tanto TableView como la altura de la celda estén configurados en Pnetworkingeterminado. Si ese es un problema (el layout automático requiere más altura que los 44 puntos pnetworkingeterminados), asegúrese de hacerlo en el código: tableView.rowHeight = UITableViewAutomaticDimension No olvide configurar el valor estimatedRowHeight tableView.rowHeight = UITableViewAutomaticDimension para indicar al sistema que desea habilitar el dimensionamiento dynamic.

El tamaño automático requiere que proporcione alturas de fila estimadas, pero puede precalcular las alturas de las filas utilizando el layout automático.

Para hacer eso, necesitarás una celda "ficticia" llena de datos para la celda cuyo tamaño estás tratando de calcular. Y luego puedes utilizar el layout automático para hacer el trabajo por ti:

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { static YourCell *dummy = nil; static NSLayoutConstraint *widthConstraint = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ UINib *nib = [UINib nibWithNibName:@"YourCell" bundle:nil]; dummy = [[nib instantiateWithOwner:nil options:nil] firstObject]; widthConstraint = [NSLayoutConstraint constraintWithItem:dummy.contentView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute: NSLayoutAttributeWidth multiplier:1.0 constant:320.0]; widthConstraint.priority = 750; //Good idea to lower priority of this constraint so it doesn't interfere with whatever table view sets internally [dummy addConstraint:widthConstraint]; }); //account for current table view width widthConstraint.constant = tableView.bounds.width; //... //Configure dummy cell here //... CGSize size = [dummy systemLayoutSizeFittingSize:UILayoutFittingCompressedSize]; return size.height; } 

puedes usar

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

o

 _activityTable.estimatedRowHeight = [CompanyEventCell cellHeight];