Question

Je suis en train de mettre en place un UITableViewCell qui peut avoir une image dans le coin supérieur droit.

Je l'ai travaille pour le mode portrait, mais quand je tourne au paysage, l'image disparaît.

Voici le code:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

        UIImage *cornerImage = [UIImage imageNamed:@"star_corner.png"];
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(cell.contentView.bounds.size.width - cornerImage.size.width,
                                                                               0,
                                                                               cornerImage.size.width,
                                                                               cornerImage.size.height)];
        imageView.tag = kCornerImageViewTag;
        [cell.contentView addSubview:imageView];
        [imageView release];
    }

    UIImageView *theView = (UIImageView *)[cell.contentView viewWithTag:kCornerImageViewTag];
    [theView setImage: [UIImage imageNamed:@"star_corner.png"]];

    cell.textLabel.text = @"the text label";
    return cell;
}

Fait intéressant, si je commente la ligne « cell.textLabel.text = », l'image ne montre dans le paysage ... bien qu'il ne se déplace pas vers l'extrême droite.

S'il y a autre chose que je fais mal ici, s'il vous plaît laissez-moi savoir.

Merci d'avance pour toute aide.

Était-ce utile?

La solution

je me suis dit cela. La solution était de créer deux ... un pour l'étoile image coin de UIImageView, et un pour l'image de fond de la cellule.

J'ai ajouté le UIImageView de coin étoile comme sous-vue à l'image de fond UIImageView, puis attribué à ce cell.backgroundView.

Les positions UIImageView étoiles se correctement par l'utilisation de:

starImageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

Et puisque l'ensemble est affecté à la cell.backgroundView (au lieu de cell.contentView), il n'est pas affectée par le bouton de suppression ou de contrôle de réordonnancement de la cellule.

Autres conseils

Votre UIViewController doit répondre à didRotateFromInterfaceOrientation.

Dans cette méthode, vous pouvez itérer à travers les cellules, obtenir le UIImageView avec [cellule viewWithTag] et modifier la propriété de châssis selon les nouvelles dimensions cellulaire (cell.contentView.bounds).

Bonne chance!

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