2017-09-13 5 views
7

Je travaille sur une application de montre Apple. Dans l'application, j'ai une vue où l'utilisateur peut glisser à gauche et à droite entre 3 résultats donnés. J'utilise WKInterfaceLabel pour afficher les informations sur les résultats. À chaque passage, les étiquettes sont mises à jour avec un nouveau texte.Animer WKInterfaceLabel avec changement de texte apple watch swift

Voir capture d'écran:

Results screen

Je veux animer le changement de texte sur swipe. Comment puis-je faire ceci?

Toute aide fournie sera appréciée. Merci!

+0

Est-ce que je vous comprends bien que vous avez une seule page, et que vous voulez modifier le contenu de l'étiquette en glissant à gauche et à droite? –

+0

@ ReinhardMänner oui, vous avez raison. –

+0

Avez-vous essayé d'ajouter un 'WKSwipeGestureRecognizer' (docu [ici] (https://developer.apple.com/documentation/watchkit/wkswipegesturerecognizer)) à votre page? –

Répondre

2

Ce n'est pas très élégant, mais cela devrait fonctionner:
Vous pouvez fondre le contenu d'un WKInterfaceLabel, et fondre dans une autre étiquette à sa place. Donc, placez 2 objets au même endroit. L'un d'eux est visible (alpha = 1.0) et l'autre invisible (alpha = 0.0).
Lorsque vous balayez, déterminez la nouvelle valeur qui doit être affichée et définissez-la sur l'étiquette invisible.
Ensuite, animez la transition à l'aide de la fonction animate(withDuration:animations:) du WKInterfaceController. Dans le bloc d'animation, modifiez les valeurs alpha au besoin, quelque chose comme

animateWithDuration(1.0) { 
    self.visibleLabel.setAlpha(0.0) 
    self.invisibleLabel.setAlpha(1.0) 
} 

Hope this helps!

+0

Je l'ai eu. C'est une sorte de solution de contournement mais cela fonctionnera. Bonne idée cependant. Merci! –

+0

Je vais attribuer la prime dans la période de grâce. J'attendrai si j'obtiens une meilleure solution. J'espère que tu as compris! –

+0

Pas de problème! Et, bien sûr, il suffit de changer la valeur alpha de l'étiquette supérieure ... –

2

essayer: -

func labelimage(img: UIImageView) { 
     print(labelrate.hidden) 
     if (labelrate.hidden) { 
      UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { 
       self.labelrate.alpha = 1 
      }, completion: nil) 
     } 
     else { 
      UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { 
       self.labelrate.alpha = 0 
      }, completion: nil) 
     } 
     self.labelrate.hidden = !self.labelrate.hidden 
    } 
+1

Je fais ce travail dans watchOS et uiimageview et uiview ne sont pas disponibles dans watchOS. Pouvez-vous fournir une autre solution? Aussi, qu'est-ce que le labelrate? Et pourquoi passez-vous img en fonction? –