Voglio ridimensionare l'altezza della cella in base all'altezza dell'etichetta e all'altezza dell'etichetta in base al testo. O c'è un modo per ridimensionare l'altezza della cella in base al testo inserito in UITextView
?Ridimensiona dinamicamente UITableViewCell nell'altezza di UILabel
risposta
QUESTO METODO È DEPRECATO DAI iOS 7.0.
C'è un metodo delegato UITableView
chiamato heightForRowAtIndexPath
che viene chiamato prima di creare una cella o una tabella.
è possibile utilizzare il NSIndexPath
passata ad essa per ottenere il testo in una riga specifica e utilizzare il metodo sizeWithFont
da UIStringDrawing.h
per calcolare un CGSize
per quella riga.
Ad esempio:
CGSize size = [text sizeWithFont:font
constrainedToSize:maximumLabelSize
lineBreakMode:UILineBreakModeWordWrap];
E infine si sarebbe tornare size.height
.
Questo metodo è stato deprecato in iOS7. – mskw
--Per iOS7--
Basandosi questo fuori della risposta di Josh Vera ... collocare questo in heightForRowAtIndexPath.
Ho i dati della mia tabella memorizzati in un NSArray * tableData.
// 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;
}
non l'ho provato per iOS < 7, ma credo che dovrebbe funzionare per quello.
puoi spiegare a cosa si riferisce widthOfMyTextBox? – Scratcha
Scratcha vedi risposta aggiornata. È la larghezza che vuoi che sia la tua casella di testo. – digitalHound
Stai dicendo di voler ridimensionare un UITableViewCell contenente un UITextView man mano che più testo viene inserito nella visualizzazione del testo? – teabot
no signore, ho una cella personalizzata con l'etichetta sulla cella. Il testo proviene dal database. come aumentare l'altezza della riga della cella e non etichettare nessuna riga o altezza etichetta in modo che il testo lungo possa essere inserito nell'etichetta della cella –
possibile duplicato di [Altezza UITableCellView variabile con sottoview] (http://stackoverflow.com/questions/128012/ variable-uitablecellview-height-with-subview) – outis