web-dev-qa-db-fra.com

Qu'est-ce que la propriété "Mode" dans Interface Builder qui propose "Echelle à remplir", "Ajustement de l'aspect", etc.?

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?

40
Krumelur

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. "

26
Q8i

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.

enter image description here

Utilisons deux vues d'image pour voir comment fonctionnent les différents modes.

enter image description here

Échelle à remplir

enter image description here

Les hauteurs et largeurs d'image sont étirées pour correspondre à la taille de UIImageView.

Aspect Fit

enter image description here

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.)

Remplissage d'aspect

enter image description here

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

enter image description here

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 le drawRect: 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.

Centre

enter image description here

L'image est centrée dans la vue, mais la longueur et la largeur de l'image ne sont pas étirées.

Haut

enter image description here

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.

Bas

enter image description here

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.

La gauche

enter image description here

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.

Droite

enter image description here

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.

En haut à gauche

enter image description here

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.

En haut à droite

enter image description here

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.

En bas à gauche

enter image description here

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.

En bas à droite

enter image description here

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.

Remarques

  • 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
    
57
Suragch

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.

5
Bourne