Question

Je souhaite créer un UITableView avec différentes hauteurs de ligne et j'essaie d'accomplir cela en créant des étiquettes UIL à l'intérieur des UITableViewCells.

Voici mon code jusqu'à présent:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *MyIdentifier = @"EntryCell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
    }

    UILabel *textView = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 300, 40)];
    textView.numberOfLines = 0;
    textView.text = [entries objectAtIndex:[indexPath row]];
    [cell.contentView addSubview:textView];
    [textView release];

    return cell;
}

Cela me donne 2 lignes de texte par cellule. Cependant, chaque " entrée " Le nombre de lignes est différent et je souhaite que UITableViewCells se redimensionne automatiquement, en enveloppant le texte si nécessaire sans modifier la taille de la police.

[taille de textView] et / ou [taille de cellule] ne semblent pas fonctionner.

Voici comment je veux que UITableView ressemble:

----------------
Lorem ipsum
----------------
Lorem ipsum
Lorem ipsum
----------------
Lorem ipsum
Lorem ipsum
Lorem ipsum
----------------
Lorem ipsum
----------------
Lorem ipsum
Lorem ipsum
----------------

Quelqu'un sait-il comment faire cela correctement?

Merci.

Était-ce utile?

La solution

UITableViewDelegate définit une méthode optionnelle, heightForRowAtIndexPath, qui vous permettra de démarrer. Vous devez ensuite utiliser sizeWithFont.

Il y a quelques discussions sur votre problème précis ici:

http: // www.v2ex.com/2008/09/18/how-to-make-uitableviewcell-have-variable-height/

Le dimensionnement du texte a également été abordé dans le ce fil

Autres conseils

Ce code fonctionne pour moi. Je ne sais pas si c'est parfait, mais ça marche.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

    if(indexPath.row<[notesModel numberOfNotes]){
        NSString *cellText = [@"Your text..."];
        UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:12.0];
        CGSize constraintSize = CGSizeMake([UIScreen mainScreen].bounds.size.width - 100, MAXFLOAT);
        CGSize labelSize = [cellText sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

        return labelSize.height + 20;
    }
    else {
        return 20;
    }
}

textView.numberOfLines = 2? numberOflines définit le nombre maximum de lignes alors peut-être 2 owrk pour vous?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top