J'essaie de comprendre comment placer une sous-vue à un UITableViewCell personnalisé avec une position centrée. Comme indiqué dans la documentation (Customizing Cells), il faut "... ajouter des sous-vues à la propriété contentView de l'objet de cellule ou ...". Comme je l'ai remarqué, cela fonctionne très bien avec UITableViewStylePlain. Dans les tables UITableViewStyleGrouped, les sous-vues ne peuvent pas être centrées. Ils sont décalés vers la droite.Centrage des sous-vues dans UITableViewCell dans TableView groupé
Si la sous-vue est directement ajoutée à UITableViewCell, cela convient aux deux modes. La même chose est vraie si je sous-classe UITableViewCell et charge la cellule à partir de XIB.
Malheureusement, je ne peux pas télécharger de captures d'écran. Quelqu'un peut-il aider à résoudre le problème? Ou est-ce que je manque quelque chose de vital, car le désalignement semble correspondre à la dimension à rétrécir dans une table groupée.
Un grand merci, El
- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *cellIdentifier1 = @"AddToCell";
static NSString *cellIdentifier2 = @"AddToContentView";
static NSString *aVeryLongLine = @"---------------------------------------------";
UITableViewCell *cell = nil;
if (indexPath.section == 0) {
cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier1];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:cellIdentifier1] autorelease];
CGRect frame = cell.frame;
CGRect labelFrame = CGRectMake((frame.size.width-270)/2, (frame.size.height-40)/2, 270, 40);
UILabel *label = [[UILabel alloc] initWithFrame:labelFrame];
label.textAlignment = UITextAlignmentCenter;
label.text = aVeryLongLine;
[cell addSubview:label];
[label release];
}
}
else if (indexPath.section == 1) {
cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier2];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:cellIdentifier2] autorelease];
CGRect frame = cell.contentView.frame;
CGRect labelFrame = CGRectMake((frame.size.width-270)/2, (frame.size.height-40)/2, 270, 40);
UILabel *label = [[UILabel alloc] initWithFrame:labelFrame];
label.textAlignment = UITextAlignmentCenter;
label.text = aVeryLongLine;
[cell.contentView addSubview:label];
[label release];
}
}
else {
}
return cell;
}