您需要根據您的文本動態調整表格視圖單元格高度。之後,您需要創建一個具有動態高度的標籤,該高度取決於文本並在單元格中添加該標籤。
對於內存管理,您需要確保您的單元格是自動釋放的,並且您在單元格中添加的子視圖也會獲得relaese。
下面是一些代碼,可以幫助您顯示整個文本,而無需滾動頭痛。
假設blogArray是包含要在單元格中顯示的文本的數組(替換爲您自己的)。
- (UITableViewCell *)tableView:(UITableView *)tbleView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
if([self.blogArray count]>0)
{
CGSize labelsize;
UILabel *blogTextLabel = [[UILabel alloc] init];;
[blogTextLabel setNumberOfLines:0];
[blogTextLabel setBackgroundColor:[UIColor clearColor]];
NSString *text=[self.blogArray objectAtIndex:indexPath.row];
[blogTextLabel setFont:[UIFont fontWithName:@"Helvetica"size:14]];
labelsize=[text sizeWithFont: blogTextLabel.font constrainedToSize:CGSizeMake(268, 2000.0) lineBreakMode:UILineBreakModeWordWrap];
blogTextLabel.frame=CGRectMake(10, 24, 268, labelsize.height);
blogTextLabel.text=text;
[cell.contentView addSubview: blogTextLabel];
[blogTextLabel release];
}
else {
}
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
return cell;
}
您還需要調整您的表視圖單元格高度: -
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CGSize labelsize;
UILabel * textDesc1 = [[UILabel alloc] init];
[textDesc1 setNumberOfLines:0];
textDesc1.text=[self.blogArray objectAtIndex:indexPath.row];
[textDesc1 setFont:[UIFont fontWithName:@"Helvetica" size:14.0]];
labelsize=[textDesc1.text sizeWithFont:textDesc1.font constrainedToSize:CGSizeMake(268, 2000.0) lineBreakMode:UILineBreakModeWordWrap];
labelsize.height=labelsize.height+35;
[textDesc1 release];
return (CGFloat)labelsize.height;
}
我不認爲你把代碼來測試設備上。首先,您正在向contentview上已有的標籤添加額外的標籤,因此這不會對內存有所幫助。你有沒有嘗試過在單元格上使用超過10,000個單詞?我知道表格如何工作,如何動態調整它們的大小,如何爲字符串指定屬性等。但不是如何將它們混合在一起,以便滾動是平滑的,最重要的是不會崩潰應用程序。嘗試一下,如果你有解決方案,請回復我。謝謝 – GianPac