Eu tenho uma exibição de imagem, declarada programaticamente, e estou definindo sua imagem, também programaticamente.
No entanto, não consigo definir a imagem para se ajustar ao aspecto e alinhar o centro à visualização da imagem.
Em outras palavras, quero que a imagem:
- Reduza para ajustar ao aspecto, se a imagem for grande.
- Centralize, mas não aumente a escala, se a imagem for pequena.
Como faço para conseguir isso?
ios
objective-c
uiimageview
uiimage
Ravi Vooda
fonte
fonte
Respostas:
Apenas colando a solução:
Assim como @manohar disse
resolveu meu problema
fonte
CGRectContainsRect(imageView.bounds, {CGPointZero, image.size})
CGSize imageSize = ((UIImage*)imagesArray[i]).size;
,CGSize viewSize = imageView.bounds.size
,if (viewSize.width > imageSize.width && viewSize.height > imageSize.height) {
.Em linguagem rápida, podemos definir o modo de conteúdo da visualização UIImage da seguinte forma:
fonte
Rápido
Você pode usar as seguintes opções para posicionar sua imagem:
scaleToFill
scaleAspectFit
// conteúdo dimensionado para se ajustar ao aspecto fixo. o restante é transparenteredraw
// mudança de redesenho nos limites (chama -setNeedsDisplay)center
// o conteúdo permanece do mesmo tamanho. posicionado ajustado.top
bottom
left
right
topLeft
topRight
bottomLeft
bottomRight
fonte
Resposta atualizada
Quando eu originalmente respondi a essa pergunta em 2014, não havia nenhum requisito para não aumentar a imagem no caso de uma imagem pequena. (A pergunta foi editada em 2015. ) Se você tiver esse requisito, será necessário comparar o tamanho da imagem com o do imageView e usá-lo
UIViewContentModeCenter
(no caso de uma imagem menor que o imageView) ouUIViewContentModeScaleAspectFit
em todos os outros casos. .Resposta original
Definir o contentMode do imageView como
UIViewContentModeScaleAspectFit
suficiente para mim. Parece centralizar as imagens também. Não sei por que outras pessoas estão usando a lógica com base na imagem. Veja também esta pergunta: aspecto do iOS ajustado e centralizadofonte
Eu resolvi esse problema assim.
UIImageView
(comUIViewContentModeScaleAspectFit
)(CGSize imageSize = imageView.image.size)
UIImageView
redimensionar.[imageView sizeThatFits:imageSize]
Eu queria colocar o UIView no centro superior de
UICollectionViewCell
. então, eu usei essa função.Funciona para mim.
fonte
Essa subclasse usa o centro se a imagem não for maior que a vista, caso contrário, ela será reduzida. Achei isso útil para um
UIImageView
que muda o tamanho.A imagem exibida é menor que a vista para tamanhos grandes, mas maior que a vista para tamanhos pequenos. Eu quero apenas diminuir, mas não aumentar.
fonte
Você pode conseguir isso definindo o modo de conteúdo da exibição de imagem como UIViewContentModeScaleAspectFill.
Em seguida, use o método a seguir para obter o objeto de imagem de redimensionamento redimensionado.
Editado aqui (versão rápida)
fonte
fonte
fonte
Para pessoas que procuram redimensionar o UIImage,
fonte