Por que essa base desaparece do UitableViewCell ao girar para a paisagem?
-
27-09-2019 - |
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.
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!