Cómo dibujar consistentemente NSAttributedString en UITextView en UITableViewCell

Estoy teniendo problemas para obtener resultados consistentes de UITextViews en un UITableViewCell usando NSAttributedStrings.

Inside - (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

if (cell == nil) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

    headerText = [[UITextView alloc]initWithFrame:CGRectZero];
    [headerText setUserInteractionEnabled:NO];
    headerText.tag = HEADER_TEXT;
    [cell.contentView addSubview:headerText]; 
} else {
    headerText = (UITextView*)[cell.contentView viewWithTag:HEADER_TEXT];
}

//...setting up attributed strings


[headerText setAttributedText:headerString];

CGSize headerSize = [headerText sizeThatFits:CGSizeMake(246, CGFLOAT_MAX)];

headerText.frame = CGRectMake(45, 8, headerSize.width, headerSize.height);

Resultados:

Como puede ver, los dos primeros parecen dibujar el texto de una manera que yo esperaría / querría. En los dos últimos, el método UITextView sizeThatFits devuelve un tamaño mucho mayor que el que se requiere para dibujar el texto y el texto se centra en el marco en lugar de ajustarse a la parte superior del marco. Esto es un problema porque quiero poder diseñar otras vistas basadas en la altura del marco uitextview.

Después de desplazarse fuera del cuadro y volver a entrar:

Ahora se vuelve aún más extraño, cuando las celdas se reutilizan, y la cadena atribuida se establece de nuevo. El uitextview dibuja el texto de una manera inconsistente.

Incluso configurando los ajustes de contenido a

headerText.contentInset = UIEdgeInsetsMake(-8, -8, -8, -8);

No proporciona ningún tipo de resultados consistentes:

Y después de desplazarse con el conjunto de conjunto de contenidos:

¿Hay otros atributos en UITextView que me permitan obtener el comportamiento que necesito?

Respuestas a la pregunta(1)

Su respuesta a la pregunta