web-dev-qa-db-fra.com

SwiftUI Ajout de "dot dot dot" inutile au texte animé

J'écris une application pour iPhone en utilisant SwiftUI dans XCode. Dans l'une des vues, il y a une étiquette de texte qui change son texte chaque fois qu'un bouton est enfoncé. La vue entière est animée de ressort, donc chaque fois que le texte est modifié via le bouton, il est modifié avec une animation. L'animation fonctionne bien, sauf que pendant l'animation, l'étiquette Texte ajoute une ellipse inutile à la fin du texte. J'ai essayé de supprimer les ellipses en utilisant:

Text("text")
    .truncationMode(nil)

Cependant, cela donne une erreur. Existe-t-il un moyen de désactiver le "..." dans l'étiquette de texte? Sinon, existe-t-il un moyen de désactiver les animations uniquement pour cette étiquette de texte sans affecter les autres, puisque la vue entière est animée?

6
billschmidt626

Vous pouvez utiliser Text("text").animation(nil) pour désactiver l'animation.

ou vous pouvez choisir d'autres animations pour empêcher le ...

Text("text").animation(.spring(response: 0.0, dampingFraction:0.2))
1
E.Coms

Vous pouvez utiliser minimumScaleFactor(_ factor: CGFloat). Le texte rétrécira en fonction de la valeur du facteur.

Par exemple, si votre taille de police est de 10 et votre facteur de 0,4, la taille de la police du texte pourra diminuer jusqu'à 4 si nécessaire.

Text("text")
    .minimumScaleFactor(0.1)
0
Nicolas Mandica

Essaye ça:

struct UnAnimatedText: View {
    private let text: String
    init(_ text: String) {
        self.text = text
    }

    var body: some View {
        Button(action: {

        }) {
            Text(text)
                .frame(maxWidth: .infinity)
                .animation(nil)
        }
        .disabled(true)
    }
}

Le texte changera sans animation mais cadre de UnAnimatedText - avec animations.

.frame (maxWidth: .infinity) est facultatif, l'idée principale est d'envelopper Button

0
Valitov Azamat