Domanda

Sto cercando di impostare un UITableViewCell che può avere un'immagine in alto a destra.

L'ho lavorare per la modalità ritratto, ma quando ho ruotare al paesaggio, l'immagine scompare.

Ecco il codice:

- (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;
}

È interessante notare che, se io commento la "cell.textLabel.text =" linea, l'immagine fa spettacolo nel paesaggio ... anche se non si sposta verso l'estrema destra.

Se c'è qualcos'altro che sto facendo male qui, per favore fatemelo sapere.

Grazie in anticipo per qualsiasi tipo di assistenza.

È stato utile?

Soluzione

ho calcolato questo fuori. La soluzione era quella di creare due di UIImageView ... uno per l'immagine angolo stella, e uno per l'immagine di sfondo della cella.

ho aggiunto l'UIImageView angolo stella come una visualizzazione secondaria per lo sfondo dell'immagine UIImageView, poi assegnato a quella cell.backgroundView.

Le stelle UIImageView si correttamente posizioni mediante l'uso di:

starImageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

E poiché il tutto viene assegnato al cell.backgroundView (invece di cell.contentView), non è influenzata dal tasto di cancellazione della cella o controlli riordino.

Altri suggerimenti

L'UIViewController dovrebbe rispondere a didRotateFromInterfaceOrientation.

In questo metodo si può scorrere cellule, supporta l'UIImageView con [cell viewWithTag] e modificare la proprietà intelaiatura secondo la nuova cella dimensioni (cell.contentView.bounds).

In bocca al lupo!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top