2012-05-12 2 views
0

Я пытаюсь динамически пересчитать высоту ячейки, которая содержит UITextView. Высота ячейки зависит от высоты UITextView.Динамическая высота ячейки iOS

Исходный код ниже пересчитывает высоту для каждой ячейки таблицы. Это текст с NSDictionary. После того, как все высоты пересчитаны, я перезагружу свой вид таблицы с новой высотой, которая содержится в массиве heightCells;

UITextView *tempTextView = [[UITextView alloc] init]; 
UIFont *font = [UIFont fontWithName:@"Helvetica" size:16.0]; 
[tempTextView setFrame:CGRectMake(10, 63, 300, 9999)]; 
[tempTextView setFont:font]; 
NSString *str = [d valueForKey:@"definition"]; // set long text 
tempTextView.text = str; 
CGRect frame = tempTextView.frame; 
frame.size.height = tempTextView.contentSize.height + 20.0; 
tempTextView.frame = frame; 
[tempTextView sizeToFit]; 
int height = tempTextView.frame.size.height + 150.0; // set padding 150.0 px 
[heightCells addObject:[NSNumber numberWithFloat:height]]; 

UITableView метод:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    return [[heightCells objectAtIndex:indexPath.row] floatValue]; 
} 

На не сетчатке дисплей все работает хорошо, и высота пересчитывается правильно, но на дисплее сетчатки у меня есть проблемы с пересчетом. Я знаю, что сетчатка и не сетчатки имеют один вид 320x480 точек, и это не должно влиять на пересчет. Но в моем случае это появляется.

См. Снимок экрана ниже. Как вы можете видеть на скриншоте, нижнее дополнение после кнопки совместного доступа отличается от сетчатки и не отображает сетчатки. И я не знаю, какая из них эта проблема.

retina

not retina

Спасибо за помощь!

ответ

1

Кажется, что рама tempTextView отличается, когда она находится на UITableViewCell. Я описал свою технику работы в этом answer.

Смежные вопросы