2016-02-10 15 views
0

我有可變長度的文本從網絡請求進來顯示在UTableView中。它們並不是一次全部進來,所以我不知道所有文本塊的長度,就在每個文本塊都進來的時候。將它想象成一個Twitter流,但是必須單獨請求tweets。如何優雅地處理UITableView中來自網絡的可變長度文本?

我該如何在UITableView中優雅地顯示它?我想在他們進來時顯示它們,但是如果我每次都重新計算單元格高度,我會在用戶的滾動位置周圍擲出一噸,這非常煩人。

我會如何處理這個優雅,也許保持滾動抵消莫名其妙?

+0

也許你需要編寫一些代碼作爲幫助的起點 – sage444

+2

@ sage444看起來更像是一個抽象問題,不一定要求顯式代碼 – random

回答

0

試試這段代碼。

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


    MyObject *obj = [self.dataArray objectAtIndex:indexPath.row]; 

    CGFloat cellHeight; 
    if ([self getExpectedLabelSizeForString:obj.textValue].height/15 < 2) { 
     cellHeight = 55.0; 
    } 
    else{ 
     cellHeight = 35 + ([self getExpectedLabelSizeForString:obj.textValue].height - [self getExpectedLabelSizeForString:obj.textValue].height/15); 
    } 
    return cellHeight; 
} 


- (CGSize)getExpectedLabelSizeForString:(NSString *)string{ 

    NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
              [UIFont fontWithName:@"Helvetica" size:15], NSFontAttributeName, 
              nil]; 

    CGRect frame = [string boundingRectWithSize:CGSizeMake(208,FLT_MAX) 
             options:NSStringDrawingUsesLineFragmentOrigin 
            attributes:attributesDictionary 
             context:nil]; 

    CGSize size = frame.size; 
    return size; 
} 
0

如果您支持iOS8 +,則可以使用自動調整大小的單元格。 設置爲tableView.rowHeight = UITableViewAutomaticDimension並將頂部,左側,右側(或寬度)和底部限制添加到單元的contentView。還要添加一些偏移量。 細胞會自動增長。

相關問題