Eu tenho um monte de imagens que estou usando para visualizações de imagens de células, todas elas não são maiores que 50x50. por exemplo, 40x50, 50x32, 20x37 .....
Quando eu carrego a visualização da tabela, o texto não se alinha porque a largura das imagens varia. Também gostaria que pequenas imagens aparecessem no centro em vez de à esquerda.
Aqui está o código que estou tentando dentro do meu método 'cellForRowAtIndexPath'
cell.imageView.autoresizingMask = ( UIViewAutoresizingNone );
cell.imageView.autoresizesSubviews = NO;
cell.imageView.contentMode = UIViewContentModeCenter;
cell.imageView.bounds = CGRectMake(0, 0, 50, 50);
cell.imageView.frame = CGRectMake(0, 0, 50, 50);
cell.imageView.image = [UIImage imageWithData: imageData];
Como você pode ver, tentei algumas coisas, mas nenhuma delas funcionou.
self.imageView.bounds
a imagem será centralizada.UITableViewCell
?Para aqueles de vocês que não têm uma subclasse de
UITableViewCell
:O código acima define o tamanho como 40x40.
Swift 2
Ou você pode usar outra abordagem (não testada) sugerida por @Tommy:
Swift 3+
O código acima é a versão Swift 3+ do anterior.
fonte
UIScreen.mainScreen.scale
então eu apenas fui comUIGraphicsBeginImageContext
. Também redimensionou o imageView na célula básica.Veja como eu fiz. Esta técnica se encarrega de mover o texto e os rótulos de texto detalhados de forma adequada para a esquerda:
fonte
visualização da imagem adicionada como subvisualização à célula tableview
fonte
A célula inteira não precisa ser refeita. Você pode usar as propriedades indentationLevel e indentationWidth de tableViewCells para deslocar o conteúdo de sua célula. Em seguida, você adiciona sua imageView personalizada ao lado esquerdo da célula.
fonte
É melhor criar uma visualização de imagem e adicioná-la como uma subvisualização à célula. Então, você pode obter o tamanho de quadro desejado.
fonte
Simplesmente Swift ,
Etapa 1: criar uma subclasse da
UITableViewCell
etapa 2: adicionar este método à subclasse de UITableViewCell
Etapa 3: Crie um objeto de célula usando essa SubClasse em
cellForRowAtIndexPath
,Etapa 4: aproveite
fonte
fonte
Isso funcionou para mim rapidamente:
Crie uma subclasse de UITableViewCell (certifique-se de vincular sua célula no storyboard)
Em cellForRowAtIndexPath, retire a célula da fila como seu novo tipo de célula:
Obviamente, altere os valores numéricos para se adequar ao seu layout
fonte
Criei uma extensão usando a resposta de @GermanAttanasio. Ele fornece um método para redimensionar uma imagem para um tamanho desejado e outro método para fazer o mesmo ao adicionar uma margem transparente à imagem (isso pode ser útil para visualizações de tabela onde você deseja que a imagem também tenha uma margem).
fonte
Aqui está o método de trabalho de @germanattanasio, escrito para Swift 3
fonte
Se você usar,
cell.imageView?.translatesAutoresizingMaskIntoConstraints = false
você pode definir restrições no imageView. Aqui está um exemplo prático que usei em um projeto. Evitei subclasses e não precisei criar storyboard com células de protótipo, mas demorei um pouco para começar a funcionar, então provavelmente melhor usar apenas se não houver uma forma mais simples ou concisa disponível para você.fonte
O UITableViewCell regular funciona bem para posicionar coisas, mas o cell.imageView não parece se comportar como você deseja. Descobri que é simples o suficiente fazer com que o UITableViewCell tenha um layout adequado, primeiro dando a cell.imageView uma imagem de tamanho adequado, como
Então você pode apenas conectar seu próprio UIImageView funcionando corretamente com
Defina a imagem em anImageView e ela fará o que você espera que um UIImageView faça. Seja do tamanho que você deseja, independentemente da imagem que você fornecer. Isso deve ir em tableView: cellForRowAtIndexPath:
fonte
Esta solução desenha essencialmente a imagem como 'ajuste de aspecto' dentro do retângulo fornecido.
fonte
Eu tive o mesmo problema. Obrigado a todos os que responderam - Consegui encontrar uma solução juntos usando partes de várias dessas respostas.
Minha solução é usar o swift 5
O problema que estamos tentando resolver é que podemos ter imagens com diferentes proporções de aspecto em nosso
TableViewCell
mas queremos que elas sejam renderizadas com larguras consistentes. As imagens devem, é claro, renderizar sem distorção e preencher todo o espaço. No meu caso, não havia problema em alguns "cortes" de imagens altas e estreitas, então usei o modo de conteúdo.scaleAspectFill
Para fazer isso, criei uma subclasse personalizada de
UITableViewCell
. No meu caso, eu nomeei issoStoryTableViewCell
. A classe inteira é colada abaixo, com comentários embutidos.Essa abordagem funcionou para mim ao usar também uma Visualização de acessório personalizada e rótulos de texto longo. Aqui está uma imagem do resultado final:
Visualização de tabela renderizada com largura de imagem consistente
fonte
A solução que encontramos é semelhante a muitas das outras. Mas para obter a posição correta do separador, tivemos que configurá-lo antes de chamar
super.layoutSubviews()
. Exemplo simplificado:fonte