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?