Je me demande à quoi sert le menu déroulant "Mode"? Il contient "Echelle à remplir", "Ajustement de l'aspect" et ainsi de suite. Je n'ai jamais eu à le changer jusqu'à présent, je suis toujours curieux de savoir à quoi il peut servir. Quelqu'un peut-il expliquer?
Afficher le guide de programmation donne des détails sur ce que vous demandez. Si vous faites défiler la liste jusqu'à la section intitulée " Modes de contenu ", vous trouverez ce que vous cherchez.
Fondamentalement, selon Apple:
"Chaque vue a un mode de contenu qui contrôle la façon dont la vue recycle son contenu en réponse aux changements de la géométrie de la vue [...] la valeur de la propriété contentMode détermine si le bitmap doit être mis à l'échelle pour s'adapter aux nouvelles limites ou simplement épinglé à un coin ou le bord de la vue. "
La propriété du mode conten d'une vue indique comment son contenu doit être organisé. Dans Interface Builder, les différents modes peuvent être sélectionnés dans l'inspecteur d'attributs.
Utilisons deux vues d'image pour voir comment fonctionnent les différents modes.
Les hauteurs et largeurs d'image sont étirées pour correspondre à la taille de UIImageView
.
Le côté le plus long (hauteur ou largeur) de l'image est étiré pour correspondre à la vue. Cela rend l'image aussi grande que possible tout en affichant l'image entière et sans déformer la hauteur ou la largeur. (J'ai défini l'arrière-plan UIImageView
sur bleu pour que sa taille soit claire.)
Le côté le plus court (hauteur ou largeur) de l'image est étiré pour correspondre à la vue. Comme "Aspect Fit", les proportions de l'image ne sont pas déformées par rapport à leur rapport d'aspect d'origine.
Redessiner est uniquement pour les vues personnalisées qui doivent effectuer leur propre mise à l'échelle et redimensionnement. Nous n'utilisons pas de vue personnalisée, nous ne devons donc pas utiliser Redraw. Notez que ici UIImageView
nous donne juste le même résultat que Scale to Fill, mais il fait plus de travail dans les coulisses.
À propos de Redraw, la documentation dit:
Les modes de contenu sont utiles pour recycler le contenu de votre vue, mais vous pouvez également définir le mode de contenu sur la valeur
UIViewContentModeRedraw
lorsque vous souhaitez spécifiquement que vos vues personnalisées se redessinent pendant la mise à l'échelle et le redimensionnement opérations. La définition du mode de contenu de votre vue sur cette valeur oblige le système à appeler ledrawRect:
méthode en réponse aux changements de géométrie. En général, vous devez éviter d'utiliser cette valeur dans la mesure du possible et vous ne devez certainement pas l'utiliser avec les vues système standard.
L'image est centrée dans la vue, mais la longueur et la largeur de l'image ne sont pas étirées.
Le bord supérieur de l'image est centré horizontalement en haut de la vue, et la longueur et la largeur de l'image ne sont pas étirées.
Le bord inférieur de l'image est centré horizontalement en bas de la vue, et la longueur et la largeur de l'image ne sont pas étirées.
Le bord gauche de l'image est centré verticalement à gauche de la vue, et la longueur et la largeur de l'image ne sont pas étirées.
Le bord droit de l'image est centré verticalement à droite de la vue, et la longueur et la largeur de l'image ne sont pas étirées.
Le coin supérieur gauche de l'image est placé dans le coin supérieur gauche de la vue. La longueur et la largeur de l'image ne sont pas étirées.
Le coin supérieur droit de l'image est placé dans le coin supérieur droit de la vue. La longueur et la largeur de l'image ne sont pas étirées.
Le coin inférieur gauche de l'image est placé dans le coin inférieur gauche de la vue. La longueur et la largeur de l'image ne sont pas étirées.
Le coin inférieur droit de l'image est placé dans le coin inférieur droit de la vue. La longueur et la largeur de l'image ne sont pas étirées.
Si le contenu (dans notre cas, l'image) est de la même taille que la vue (dans notre cas, le UIImageView
), la modification du mode de contenu ne fera aucune différence notable.
Voir this et this question pour une discussion sur les modes de contenu pour les vues autres que UIImageView
.
Dans Swift, pour définir le mode de contenu par programme, procédez comme suit:
imageView.contentMode = UIViewContentMode.ScaleToFill
imageView.contentMode = UIViewContentMode.ScaleAspectFit
imageView.contentMode = UIViewContentMode.ScaleAspectFill
imageView.contentMode = UIViewContentMode.Redraw
imageView.contentMode = UIViewContentMode.Center
imageView.contentMode = UIViewContentMode.Top
imageView.contentMode = UIViewContentMode.Bottom
imageView.contentMode = UIViewContentMode.Left
imageView.contentMode = UIViewContentMode.Right
imageView.contentMode = UIViewContentMode.TopLeft
imageView.contentMode = UIViewContentMode.TopRight
imageView.contentMode = UIViewContentMode.BottomLeft
imageView.contentMode = UIViewContentMode.BottomRight
http://vocaro.com/trevor/blog/2009/10/12/resize-a-uiimage-the-right-way/
devrait très bien vous donner les idées de base.