Как последовательно нарисовать NSAttributedString в UITextView в UITableViewCell

У меня возникают проблемы при получении согласованных результатов из UITextViews в UITableViewCell с использованием NSAttributedStrings.

Внутри - (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);

Результаты:

Как видите, первые два, кажется, рисуют текст так, как я ожидал / хотел бы. В последних двух метода UITextView sizeThatFits возвращает гораздо больший размер, чем требуется для рисования текста, и текст становится по центру в кадре, а не плотно прилегает к верхней части кадра. Это проблема, потому что я хочу иметь возможность размещать другие представления в зависимости от высоты кадра uitextview.

После прокрутки из кадра и обратно в:

Теперь становится еще более странным, когда ячейки используются повторно, и приписанная строка снова устанавливается. uitextview рисует текст непоследовательным образом.

Даже Установка contentInsets для

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

Не дает каких-либо последовательных результатов:

И после прокрутки с набором содержимого:

Есть ли другие атрибуты в UITextView, которые позволили бы мне получить поведение, которое мне нужно?

Ответы на вопрос(1)

Ваш ответ на вопрос