2014-04-25 13 views
6

Voglio creare un UITableview con altezza dinamica per cella. In ogni cella sto visualizzando un messaggio di testo variabile. Ora voglio che la mia cella di tabella sia conforme al testo del messaggio e anche la mia etichetta presente sulla cella dovrebbe visualizzare il testo. Sto rendendo flessibile la mia cella di tabella sulla base del numero di caratteri che possono essere contenuti in una linea. Ma ecco il problema. Alfabeti diversi occupano uno spazio diverso. Quindi, non sono in grado di calcolare quanti alfabeti possono venire in una singola riga. Qualche suggerimento a questo ???Come contare quanti caratteri possono venire in una linea UILabel?

+0

codice postale che hai provato. – Rushabh

+0

Speriamo che ci siano classi per la gestione con il carattere. Non è necessario calcolare per ogni carattere con font ecc. –

risposta

2

Prova questo:

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{CGSize size; 
     if (SYSTEM_VERSION_LESS_THAN(@"7.0")) { 
      // code here for iOS 5.0,6.0 and so on 
      CGSize fontSize = [text sizeWithFont:[UIFont fontWithName:@"Helvetica" size:17]]; 
      size = fontSize; 
     } 
     else { 
      // code here for iOS 7.0 
      NSDictionary *attributesDictionary = [NSDictionary dictionaryWithObjectsAndKeys: 
                [UIFont fontWithName:@"Helvetica Neue" size:19], NSFontAttributeName, 
                nil]; 
      CGRect fontSizeFor7 = [text boundingRectWithSize:CGSizeMake(571, 500) 
                options:NSStringDrawingUsesLineFragmentOrigin 
                attributes:attributesDictionary 
                context:nil]; 
      size = fontSizeFor7.size; 

     }return size.height +30 ; 

    } 
+0

Its Working Fine per iOS 7, ma non funziona per iOS 6 – user3572586

+0

perché +30? 'size.height + 30' – thedp

0

Controllare la mia risposta

Calculate UITableViewCell height to fit string

Qui si deve calcolare l'altezza delle etichette secondo il testo e quindi impostare l'altezza della cella.

È possibile calcolare l'altezza e la larghezza in modo dinamico utilizzando questo.

spero che vi aiuterà a

+0

Si sta utilizzando: [ourText sizeWithFont: font constrainedToSize: constraintSize lineBreakMode: UILineBreakModeWordWrap]; Questo metodo è stato deprecato. – user3572586

+0

Sì, lo sapevo ... ma funziona per la versione ios inferiore a 7.0. Per gli altri è possibile trovare la sostituzione di esso. Ti ho dato un indizio :) – svrushal

0

prega mia risposta qui sotto

UILabel *lbl = [[UILabel alloc] init]; 
lbl.text = @"abcd"; 
NSLog(@"count %lu",(unsigned long)[lbl.text length]); 
0
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    NSString * yourCellStr = @"The string you want to apply to your cell at this index path"; 
    CGSize maxLblSize = CGSizeMake(320, 200); 
    CGSize expectedLblSize = [yourCellStr sizeWithFont:[UIFont systemFontOfSize:15] constrainedToSize:maxLblSize lineBreakeMode:NSLineBreakByWordWrapping]; 

    return expectedLblSize.height; 

} 
+0

sizeWithFont il metodo è deprecato – user3572586

1

Non si vuole per contare quanti caratteri il testo ha, basta contare l'altezza usando:

h = [NSString stringWithFormat:@"%f", 
          [post.text boundingRectWithSize:CGSizeMake(298.0f, CGFLOAT_MAX) 
          options:(NSStringDrawingUsesLineFragmentOrigin) 
          attributes:[NSDictionary dictionaryWithObject:[UIFont fontWithName:@"Helvetica Neue" size:14.0] 
          forKey: NSFontAttributeName] 
          context:nil].size.height] 

Usa la larghezza per 298 e il carattere/tipo di carattere.

Problemi correlati