Vous pouvez le faire sans sous-classement UITableViewCell
.
Dans la méthode tableView:cellForRowAtIndexPath:
, créez une base UITableViewCell
et modifiez les propriétés du UILabel
contenu dans cette cellule. Changez le nombre maximum de lignes pour adapter plus de texte dans votre cellule.
Malheureusement, l'étiquette de la cellule n'est pas accessible aux propriétés, vous devez donc la récupérer avec la propriété subviews
.
Bien sûr, cela utilise un détail d'implémentation de UITableViewCell
, de sorte qu'il risque de rompre avec les futures versions du SDK. Utiliser avec précaution.
Voici un exemple:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"YourCellId"];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"YourCellId"] autorelease];
cell.font = [UIFont systemFontOfSize:16];
UILabel* cellLabel = [cell.contentView.subviews objectAtIndex:0];
[cellLabel setNumberOfLines:3];
}
cell.text = @"Your text";
return cell;
}
Mise à jour:
Pour définir la hauteur de ligne pour ajuster le texte, vous pouvez effectuer les opérations suivantes:
1. Définissez la cellule hauteur pour s'adapter au texte.
Vous avez besoin quelque chose comme ceci:
CGSize textSize = [text sizeWithFont:font
constrainedToSize:CGSizeMake(313, 1000)
lineBreakMode:UILineBreakModeWordWrap];
cell.frame = CGRectMake(0.0f, 0.0f, 320.0, textSize.height);
2. Retour la hauteur de la cellule dans la méthode tableView:heightForRowAtIndexPath:
.
Par exemple comme ceci:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell* cell = [self tableView:(UITableView*)self.view cellForRowAtIndexPath:indexPath];
CGRect cellFrame = cell.frame;
return cellFrame.size.height;
}
Merci! Mais dans mon AwakeFromNib, j'ai ce code "self.jokeTableView.rowHeight = 70.0;" Comment faire pour que le rowHeight change en fonction de la quantité de texte nécessaire? –
J'ai ajouté un exemple de comment faire cela dans ma réponse. J'espère que cela aide. – henning77