Jak konsekwentnie rysować NSAttributedString w UITextView w UITableViewCell

Mam problemy z uzyskaniem spójnych wyników z UITextViews w UITableViewCell przy użyciu 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);

Wyniki:

Jak widać, pierwsze dwa wydają się rysować tekst w sposób, którego oczekiwałem / chciałbym. W dwóch ostatnich metodach UITextView sizeThatFits zwraca znacznie większy rozmiar, niż wymagany jest do narysowania tekstu, a tekst staje się wycentrowany w ramce, a nie napięty do górnej części ramki. Jest to problem, ponieważ chcę mieć możliwość rozmieszczenia innych widoków na podstawie wysokości ramki uitextview.

Po przewinięciu poza ramkę iz powrotem do:

Teraz staje się jeszcze dziwniejszy, gdy komórki są ponownie używane, a przypisany ciąg jest ustawiany ponownie. uitextview rysuje tekst w niespójny sposób.

Parzyste Ustawianie zawartościInsets na

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

Nie zapewnia żadnych spójnych wyników:

A po przewijaniu za pomocą zestawu contentinset:

Czy są inne atrybuty na UITextView, które pozwolą mi uzyskać zachowanie, którego potrzebuję?

questionAnswers(1)

yourAnswerToTheQuestion