275 votes

Comment redimensionner une image avec SwiftUI?

J'ai une grande image dans Assets.xcassets. Comment redimensionner cette image avec SwiftUI pour la rendre petite ?

J'ai essayé de définir le cadre mais cela ne fonctionne pas :

Image(room.thumbnailImage)
    .frame(width: 32.0, height: 32.0)

6voto

Hanny Points 821

Étant donné que nous ne devrions pas fixer la taille de l'image de manière statique, voici une meilleure façon de fournir une gamme d'ajustement en fonction de la résolution de l'écran sur différents appareils.

Image("Nom de l'image ici")
       .resizable()
       .frame(minWidth: 60.0, idealWidth: 75.0, maxWidth: 95.0, minHeight: 80.0, idealHeight: 95.0, maxHeight: 110.0, alignment: .center)
       .scaledToFit()
       .clipShape(Capsule())
       .shadow(color: Color.black.opacity(5.0), radius: 5, x: 5, y: 5)

6voto

sudan suwal Points 884

Par défaut, les vues d'image se dimensionnent automatiquement en fonction de leur contenu, ce qui peut les faire dépasser de l'écran. Si vous ajoutez le modificateur resizable(), l'image sera au lieu de cela automatiquement dimensionnée pour remplir tout l'espace disponible :

Image("example-image")
    .resizable()

Cependant, cela peut également entraîner une distorsion du rapport hauteur/largeur de l'image d'origine, car elle sera étirée dans toutes les dimensions de la quantité nécessaire pour remplir l'espace.

Si vous souhaitez conserver son rapport hauteur/largeur, vous devez ajouter un modificateur aspectRatio en utilisant soit .fill soit .fit, comme ceci :

Image("example-image")
    .resizable()
    .aspectRatio(contentMode: .fit)

5voto

cmlcrn17 Points 31

Remarque : Mon nom d'image est img_Logo et vous pouvez changer le nom de l'image définir les propriétés de l'image comme ceci :

 VStack(alignment: .leading, spacing: 1) {
                        //Image Logo Start
                        Image("img_Logo")
                            .resizable()
                            .padding(.all, 10.0)
                            .frame(width: UIScreen.main.bounds.width * 0.4, height: UIScreen.main.bounds.height * 0.2)
                        //Image Logo Done
                    }

0 votes

Je vous recommande vivement d'écrire un texte bref avec votre code, une sorte d'explication. Veuillez consulter le code de conduite ici : stackoverflow.com/conduct

5voto

Image(systemName: "person.fill")
  .font(.system(size: 13))

fonctionnera également si vous utilisez systemName.

3voto

sachin jeph Points 149

Si vous voulez redimensionner l'image en swiftUI, utilisez simplement le code suivant :

import SwiftUI

    struct ImageViewer : View{
        var body : some View {
            Image("Ssss")
            .resizable()
            .frame(width:50,height:50)
        }
    }

Mais voici un problème avec cela. Si vous ajoutez cette Image à l'intérieur d'un bouton, l'image ne sera pas affichée, seulement un bloc de couleur bleue sera là. Pour résoudre ce problème, faites ceci :

import SwiftUI

struct ImageViewer : View{
    var body : some View {
        Button(action:{}){
        Image("Ssss")
        .renderingMode(.original)
        .resizable()
        .frame(width:50,height:50)
    }
   }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X