Je dois remplir des cellules avec du texte enveloppant de longueur variable. Ma routine actuelle gère cela de manière satisfaisante, cependant, je suis préoccupé par l'utilisation de quelques constantes utilisées. Les valeurs 10 et 260 ci-dessous représentent la marge et la largeur de cellule attendues, mais elles ne sont précises que pour la résolution de définition standard en orientation portrait.Comment gérer les constantes de position de l'écran dans le code iPhone?
Existe-t-il un objet écran/table qui me fournit ces valeurs en tant que mesures que je pourrais utiliser à la place des constantes?
- (UITableViewCell *)tableView:(UITableView *)tableView
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell;
UILabel *lbl;
CGRect frame;
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero
reuseIdentifier:AnswerIdentifier] autorelease];
frame.origin.x = 10;
frame.origin.y = 10;
frame.size.height = [self textHeight:indexPath];
frame.size.width = 260;
lbl = [[UILabel alloc] initWithFrame:frame];
lbl.lineBreakMode = UILineBreakModeWordWrap;
lbl.numberOfLines = 0;
[cell.contentView addSubview:lbl];
[lbl release];
return cell;
}
- (CGFloat)textHeight:(NSIndexPath *)indexPath {
CGSize textSize;
CGSize constraintSize;
CGFloat height;
NSString *theText = [self cellText:indexPath];
constraintSize = CGSizeMake(260.0f, MAXFLOAT);
textSize = [theText sizeWithFont:kCELL_FONT
constrainedToSize:constraintSize
lineBreakMode:UILineBreakModeWordWrap];
height = textSize.height;
return height;
}