J'ai une vue d'image, déclarée par programme, et je règle son image, également par programme.
Cependant, je me trouve incapable de régler l'image pour qu'elle s'adapte à la fois à l'aspect et à l'alignement du centre sur la vue de l'image.
En d'autres termes, je souhaite que l'image:
- Réduisez la taille pour l'adapter à l'aspect, si l'image est grande.
- Centrer mais pas agrandir, si l'image est petite.
Comment puis-je l'obtenir?
ios
objective-c
uiimageview
uiimage
Ravi Vooda
la source
la source
Réponses:
Juste coller la solution:
Tout comme @manohar l'a dit
a résolu mon problème
la source
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) {
.En langage rapide, nous pouvons définir le mode de contenu de la vue UIImage comme suit:
la source
Rapide
Vous pouvez utiliser les options suivantes pour positionner votre image:
scaleToFill
scaleAspectFit
// contenu mis à l'échelle pour s'adapter à un aspect fixe. le reste est transparentredraw
// redessiner lors du changement de limites (appelle -setNeedsDisplay)center
// le contenu reste de la même taille. positionné ajusté.top
bottom
left
right
topLeft
topRight
bottomLeft
bottomRight
la source
Réponse mise à jour
Lorsque j'ai initialement répondu à cette question en 2014, il n'était pas nécessaire de ne pas agrandir l'image dans le cas d'une petite image. (La question a été modifiée en 2015. ) Si vous avez une telle exigence, vous devrez en effet comparer la taille de l'image à celle de l'imageView et utiliser soit
UIViewContentModeCenter
(dans le cas d'une image plus petite que l'imageView) soitUIViewContentModeScaleAspectFit
dans tous les autres cas .Réponse originale
Définir le contentMode de l'imageView
UIViewContentModeScaleAspectFit
sur me suffisait. Il semble également centrer les images. Je ne sais pas pourquoi d'autres utilisent une logique basée sur l'image. Voir aussi cette question: Ajustement et centre de l'aspect iOSla source
J'ai résolu ce problème comme ça.
UIImageView
(avecUIViewContentModeScaleAspectFit
)(CGSize imageSize = imageView.image.size)
UIImageView
redimensionner.[imageView sizeThatFits:imageSize]
Je voulais mettre UIView en haut au centre de
UICollectionViewCell
. donc, j'ai utilisé cette fonction.Ça marche pour moi.
la source
Cette sous-classe utilise le centre si l'image n'est pas plus grande que la vue, sinon elle est réduite. J'ai trouvé cela utile pour un
UIImageView
qui change la taille.L'image qu'elle affiche est plus petite que la vue pour les grandes tailles, mais plus grande que la vue pour les petites tailles. Je veux qu'il soit réduit, mais pas à la hausse.
la source
Vous pouvez y parvenir en définissant le mode de contenu de la vue image sur UIViewContentModeScaleAspectFill.
Ensuite, utilisez la méthode de la méthode suivante pour obtenir l'objet uiimage redimensionné.
Modifié ici (version Swift)
la source
la source
la source
Pour les personnes à la recherche de redimensionnement UIImage,
la source