Como consistentemente desenhar NSAttributedString no UITextView no UITableViewCell
Estou tendo problemas para obter resultados consistentes do UITextViews em um UITableViewCell usando NSAttributedStrings.
Inside - (UITableViewCell *) tableView: (UITableView *) tableVisualização 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 você pode ver, os dois primeiros parecem desenhar o texto de uma maneira que eu esperaria / desejaria. Nos dois últimos, o método UITextView sizeThatFits retorna um tamanho muito maior, em seguida, é necessário para desenhar o texto e o texto fica centrado no quadro, em vez de ficar apertado na parte superior do quadro. Isso é um problema porque quero poder criar outras visualizações com base na altura do quadro do uitextview.
Depois de rolar para fora do quadro e voltar em:
Agora fica ainda mais estranho, quando as células são reutilizadas e a cadeia atribuída é definida novamente. o uitextview desenha o texto de maneira inconsistente.
Mesmo definindo o contentInsets para
headerText.contentInset = UIEdgeInsetsMake(-8, -8, -8, -8);
Não fornece nenhum tipo de resultado consistente:
E depois de rolar com o conjunto contentinset:
Existem outros atributos no UITextView que me permitem obter o comportamento de que preciso?