Ich möchte die Höhe der Zelle entsprechend der Höhe des Etiketts und der Höhe des Etiketts entsprechend dem Text ändern. Oder kann ich die Höhe der Zelle entsprechend dem in UITextView
eingegebenen Text ändern?Ändern Sie die Größe von UITableViewCell dynamisch auf UILabels Höhe
Antwort
DIESE METHODE IST SEIT iOS 7.0 ABGESCHLOSSEN.
Es gibt eine UITableView
Delegatmethode genannt heightForRowAtIndexPath
, die aufgerufen wird, bevor Sie eine Zelle oder eine Tabelle erstellen.
könnten Sie die NSIndexPath
an sie übergeben, um den Text in einer bestimmten Zeile zu erhalten und die sizeWithFont
Methode von UIStringDrawing.h
verwenden, um eine CGSize
für diese Zeile zu berechnen.
Zum Beispiel:
CGSize size = [text sizeWithFont:font
constrainedToSize:maximumLabelSize
lineBreakMode:UILineBreakModeWordWrap];
Und schließlich würden Sie size.height
zurück.
Diese Methode wurde in iOS7 veraltet. – mskw
--Für iOS7--
diese Gründend off von Josh Vera Antwort ... setzen diese in heightForRowAtIndexPath.
Ich habe meine Tabellendaten in einem NSArray * tableData gespeichert.
// set the desired width of the textbox that will be holding the adjusted text, (for clarity only, set as property or ivar)
CGFloat widthOfMyTexbox = 250.0;
-(float)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
//Get a reference to your string to base the cell size on.
NSString *cellText = [self.tableData objectAtIndex:indexPath.row];
//set the desired size of your textbox
CGSize constraint = CGSizeMake(widthOfMyTextBox, MAXFLOAT);
//set your text attribute dictionary
NSDictionary *attributes = [NSDictionary dictionaryWithObject:[UIFont systemFontOfSize:14.0] forKey:NSFontAttributeName];
//get the size of the text box
CGRect textsize = [cellText boundingRectWithSize:constraint options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
//calculate your size
float textHeight = textsize.size.height +20;
//I have mine set for a minimum size
textHeight = (textHeight < 50.0) ? 50.0 : textHeight;
return textHeight;
}
Ich habe es nicht für iOS < 7 getestet, aber ich glaube, es sollte auch dafür arbeiten.
können Sie erklären, worauf sich widthOfMyTextBox bezieht? – Scratcha
Scratcha siehe aktualisierte Antwort. Es ist die Breite, die Ihre Textbox haben soll. – digitalHound
Möchten Sie die Größe einer UITableViewCell ändern, die eine UITextView enthält, wenn mehr Text in die Textansicht eingegeben wird? – teabot
Nein Sir ich habe eine benutzerdefinierte Zelle mit Label auf der Zelle. Und Text kommt aus der Datenbank. Wie erhöhe ich die Höhe der Zellenzeilen und beschreibe die Anzahl der Zeilen oder die Höhe der Beschriftung, so dass ein langer Text in die Zelle eingefügt werden kann –
mögliches Duplikat von [Variable UITableCellView height with subview] (http://stackoverflow.com/questions/128012/ Variable-uitablecellview-height-with-subview) – outis