2010-01-20 5 views
0

je définir la taille de mes UITableCell's avec ceci:Cant régler la hauteur de mon UITableViewCell droit

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSString * vergleich = [nachricht objectAtIndex:indexPath.row]; 
    CGSize size = [vergleich sizeWithFont:[UIFont fontWithName:@"Helvetica" size:14] 
        constrainedToSize:CGSizeMake(268, MAX_HEIGHT) 
         lineBreakMode:UILineBreakModeWordWrap]; 
    return size.height + 30; 
} 

est un NSArray Nachricht qui contient tous les messages. Le code regarde juste combien de temps le message (avec une police spécifiée) est et calcule la taille. J'ai mis + 30, parce que sur le message (UITextView) est un UIlabel.

Le UITextView, qui doit contenir les messages, obtenir la taille avec ce code:

- (void)setTweetText:(NSString *)_tweet;{ 
    CGSize size = [_tweet sizeWithFont:[UIFont fontWithName:@"Helvetica" size:14] 
        constrainedToSize:CGSizeMake(268, MAX_HEIGHT) 
         lineBreakMode:UILineBreakModeWordWrap]; 
    [textText setFrame:CGRectMake(55, 25, 268, size.height + 10)]; 
    textText.text = _tweet; 
    [textText sizeToFit]; 
    textText.dataDetectorTypes = UIDataDetectorTypeLink; 
} 

Maintenant, il y a un problème et je ne sais pas pourquoi: Le UITextView est plus grande que la cellule, même si Je définis la taille de la cellule, il y a une distance désagréable entre TextView et la cellule suivante. Pourquoi n'at-il pas la bonne taille pour certaines cellules. Voici un exemple:

alt text http://img34.imageshack.us/img34/214/bildschirmfoto20100120uw.png

Répondre

1

Tout ce que je peux dire est dans mon cellForRowAtIndexPath J'utilise ce qui suit et cela fonctionne. Mon heightForRowAtIndexPath est presque identique au vôtre.

double d = [self tableView:table heightForRowAtIndexPath:indexPath]; 
UILabel* label = [[[UILabel alloc] initWithFrame:CGRectMake(10, 10, 280, d-20)] autorelease]; 
label.numberOfLines = 100; 
label.lineBreakMode = UILineBreakModeWordWrap; 
[label setFont:[UIFont boldSystemFontOfSize:[UIFont smallSystemFontSize]]]; 
label.text = [descriptions objectAtIndex:indexPath.section]; 
[cell.contentView addSubview:label]; 
0

une possibilité est que vous avez défini la largeur CGSize être différent dans chaque fonction, pour une hauteur de ligne que vous avez CGSizeMake(268, MAX_HEIGHT) et setTweetText il est CGSizeMake(262, MAX_HEIGHT)

+0

Oh sry, je l'ai réglé juste pour essayer plus petit - Ce n'est pas le problème. – Flocked

+0

alors quelle était la taille contraignante que vous utilisiez dans les deux fonctions lorsque vous avez pris la photo? –

+0

268 est la bonne taille - je l'ai mis à plus petit pour voir, s'il suffit d'ajouter de l'espace pour une ligne de plus, de sorte que la cellule est plus grande. Mais il n'a pas fait les choses correctement. – Flocked

0

ne est pas une bonne idée de sizeWithFont de cette méthode, son assez lourd et hacher vos performances de défilement. si possible calculer les hauteurs avant et les stocker pour un accès rapide à partir de cette méthode

Questions connexes