Как последовательно нарисовать 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, которые позволили бы мне получить поведение, которое мне нужно?