2013-06-17 4 views
0

теперь я известково высоту TableViewCell, как это в heightForRowAtIndexPath:Как вычислить точную высоту TableViewCell в iOS?

[string sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping]; 

, но я обнаружил, что его не точны, потому что есть линейные пространства в it.that, когда у вас есть несколько строк, там будет больше белого пространства ,

так как вы, ребята, знаете высоту?

спасибо тонну!

ответ

0

Я не использую метод, который вы используете, я делаю это:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UITableViewCell *cell;  
    YourCustomCell *yourCustomCell = [tableView dequeueReusableCellWithIdentifier:@"YourCustomCell"]; 
    cell = yourCustomCell;  
    return cell.frame.size.height; 
} 
+2

но 'heightForRowAtIndexPath' выполняется до' cellForRowAtIndexPath' – hlcfan

+0

Что вы хотите достичь именно? – Jasper

0

Это даст вам правильную высоту для ячейки.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     CGSize size = [string sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:NSLineBreakByWordWrapping]; 
     return size.height; 
    } 
+0

это то же, что и мой код. = = ||| – hlcfan

+0

Так что вы хотите точно ...? Вы не можете вернуть высоту для конкретной ячейки без этого метода. –

0

Попробуйте это:

#define CELL_CONTENT_WIDTH 320.0f // if you are using iPhone 
#define CELL_CONTENT_MARGIN 20.0f // if you are using iPhone 
#define FONT_SIZE 16.0f // if you are using iPhone 


-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 

CGFloat height = MAX([[yourArray objectAtIndex:[indexPath row]] sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:CGSizeMake(CELL_CONTENT_WIDTH - (CELL_CONTENT_MARGIN * 2), 20000.0f) lineBreakMode:NSLineBreakByWordWrapping].height, 44.0f)+ (CELL_CONTENT_MARGIN * 1.5); 


return height; 
} 
Смежные вопросы