Ich habe eine UITableViewCell
und es ist UITableViewCellStyleDefault
. Wenn ich versuche, einen Text einzugeben, der länger als die UITableViewCell
wird sie abgeschnitten. Wie kann ich die Zelle so erweitern, dass sie diesen Text aufnehmen kann?
Antworten
Zu viele Anzeigen?
Jason G
Punkte
51
Ich habe noch nicht versucht, genau das zu tun, was Sie versuchen, aber es würde wahrscheinlich in etwa so ablaufen:
Sie müssen die Größe einer Ansicht in Abhängigkeit von der Länge der darin enthaltenen Textzeichenfolge ändern.
Der Delegat der Tabellensicht (Ihr View-Controller) sollte Folgendes implementieren
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
Message *msg = (Message *)[messages objectAtIndex:indexPath.row];
CGSize size = [[msg text] sizeWithFont:[UIFont fontWithName:@"Helvetica" size:kLabelFontSize]
constrainedToSize:CGSizeMake(220.0f, 480.0f)
lineBreakMode:UILineBreakModeTailTruncation];
CGFloat minHeight = 20.0f;
CGFloat height = size.height > minHeight ? size.height : minHeight;
return height;
}
die der Ansicht mitteilt, wie hoch die einzelnen Reihen sein sollen.
Sie müssen auch die Größe des Rahmens der UITableViewCell-Beschriftung auf ähnliche Weise anpassen.
Sie können
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
}
CGRect contentRect = CGRectMake(80.0, 0.0, 240, 40);
UILabel *textView = [[UILabel alloc] initWithFrame:contentRect];
textView.text = mytext;
textView.numberOfLines = 2;
textView.textColor = [UIColor grayColor];
textView.font = [UIFont systemFontOfSize:12];
[cell.contentView addSubview:textView];
[textView release];