Anchura / altura de la celda del post iOS con layout automático

La meta

Estoy tratando de crear una celda de post dinámica utilizando el layout automático.

introduzca la descripción de la imagen aquí

Lo que he probado

La celda se está posicionando correctamente, en su mayor parte, con layout automático teniendo en count las siguientes restricciones:

introduzca la descripción de la imagen aquí

El problema

Mi primer problema fue la anchura de la label del post (Etiqueta rotulable) limitada. Eso parece resolverse usando setPrefernetworkingMaxLayoutWidth: como se describe en esta pregunta .

La altura sigue siendo un problema. Como puede ver, la burbuja del post sigue cortando. Además, no estoy seguro de cómo determinar la altura de la celda del post para la vista de tabla.

Esperaba que el layout automático funcione de alguna manera. Aquí he leído la respuesta , pero me parece que son muchos los pasos.

La pregunta

Primero, ¿es un caso en el que el layout automático es más complejo que la aritmética tradicional del marco?

En segundo lugar, utilizando el layout automático, ¿cómo puedo determinar la altura de la celda resultante?

Uso completamente el layout automático y lo que usted habla es un poco un problema. No quería modificar la forma en que se calcula el tamaño intrínseco con el propósito de performance de UITable.

Entonces usé una manera muy simple que es correcta al final. Está bien si su celda es simple, puede llegar a ser tan difícil si su celda contiene más de un text variable.

Definí mis células normalmente, donde puedes poner un UILabel que se ajuste a las inserciones (no hay problema al respecto). Luego, en el origen de datos de la tabla, define directamente la altura de la celda:

 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return [TEXTOFYOURCELL sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, 1000)].height + 31; // Here it's defined for 15 of top and bottom insets, define +1 than the size of the cell is important. } 

EDIT: Aquí hay un código sobre la UILabel en la celda (en el método init).

 __titleLabel = [UILabel new]; __titleLabel.numberOfLines = 0; [self.contentView addSubview:__titleLabel]; // adding to contentView rather than self is very important ! [__titleLabel keepInsets:UIEdgeInsetsMake(0, 15, 0, 15)]; 

Yo uso esta API: https://github.com/iMartinKiss/KeepLayout para administrar el layout automático más simple.

Esto es posible en iOS 8 como se puede leer en AppCoda

Básicamente:

  • Establezca las líneas de label en 0.
  • Establezca la altura de fila UITableViewAutomaticDimension