我有可變長度的文本從網絡請求進來顯示在UTableView中。它們並不是一次全部進來,所以我不知道所有文本塊的長度,就在每個文本塊都進來的時候。將它想象成一個Twitter流,但是必須單獨請求tweets。如何優雅地處理UITableView中來自網絡的可變長度文本?
我該如何在UITableView中優雅地顯示它?我想在他們進來時顯示它們,但是如果我每次都重新計算單元格高度,我會在用戶的滾動位置周圍擲出一噸,這非常煩人。
我會如何處理這個優雅,也許保持滾動抵消莫名其妙?
我有可變長度的文本從網絡請求進來顯示在UTableView中。它們並不是一次全部進來,所以我不知道所有文本塊的長度,就在每個文本塊都進來的時候。將它想象成一個Twitter流,但是必須單獨請求tweets。如何優雅地處理UITableView中來自網絡的可變長度文本?
我該如何在UITableView中優雅地顯示它?我想在他們進來時顯示它們,但是如果我每次都重新計算單元格高度,我會在用戶的滾動位置周圍擲出一噸,這非常煩人。
我會如何處理這個優雅,也許保持滾動抵消莫名其妙?
試試這段代碼。
- (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;
}
如果您支持iOS8 +,則可以使用自動調整大小的單元格。 設置爲tableView.rowHeight = UITableViewAutomaticDimension
並將頂部,左側,右側(或寬度)和底部限制添加到單元的contentView
。還要添加一些偏移量。 細胞會自動增長。
也許你需要編寫一些代碼作爲幫助的起點 – sage444
@ sage444看起來更像是一個抽象問題,不一定要求顯式代碼 – random