Pergunta

Estou tentando configurar um uabableViewCell que pode ter uma imagem no canto superior direito.

Eu tenho funcionando para o modo retrato, mas quando eu giro para a paisagem, a imagem desaparece.

Aqui está o código:

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

Curiosamente, se eu comentar a linha "Cell.TextLabel.Text =", a imagem aparece na paisagem ... embora não mude para a extrema direita.

Se houver mais alguma coisa que eu esteja fazendo de errado aqui, por favor me avise.

Agradecemos antecipadamente por qualquer assistência.

Foi útil?

Solução

Eu descobri isso. A solução foi criar dois UiImageView's ... um para a imagem do canto da estrela e outro para a imagem de fundo da célula.

Adicionei o UiImageView do Star Corner como uma subview à imagem de fundo UIImageView e depois atribuí isso ao Cell.backgryView.

A estrela UiImageView se posiciona corretamente pelo uso de:

starImageView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;

E como tudo é atribuído à célula.BackgroundView (em vez de celular.ContentView), ela não é afetada pelo botão excluir da célula ou controles de reordenação.

Outras dicas

Seu UIViewController deve responder a DidrotateFromInterfaceRientation.

Neste método, você pode iterar através das células, obter o UIImageView com [Cell ViewWithTag] e modificar a propriedade do quadro de acordo com as novas dimensões da célula (Cell.ContentView.Bounds).

Boa sorte!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top