2017-09-13 67 views
7

Pracuję nad aplikacją Apple watch. W aplikacji mam widok, w którym użytkownik może przesuwać w lewo i w prawo między 3 podanymi wynikami. Używam WKInterfaceLabel do wyświetlania informacji o wynikach. Przy każdym przesunięciu etykiety są aktualizowane o nowy tekst.Animować WKInterfaceLabel z zmianą tekstu Apple Watch Swift

Widok ekranu:

Results screen

Chcę animować zmianę tekstu na machnięcia. Jak mogę to zrobić?

Każda pomoc udzielona zostanie doceniona. Dzięki!

+0

Czy Rozumiem, że masz rację, że na jednej stronie, i chcesz zmienić treść etykiety, przesuwając w lewo i prawo? –

+0

@ ReinhardMänner tak, masz rację. –

+0

Czy próbowałeś dodać "WKSwipeGestureRecognizer" (dokument [tutaj] (https://developer.apple.com/documentation/watchkit/wkswipegesturerecognizer)) na swojej stronie? –

Odpowiedz

2

To nie jest bardzo eleganckie, ale powinno działać:
Możesz zanikać zawartość WKInterfaceLabel i znikną w innej etykiecie na swoim miejscu. Umieść obiekty 2 WKInterfaceLabel w tym samym miejscu. Jedna z nich jest widoczna (alpha = 1,0), a druga niewidoczna (alpha = 0,0).
Po przesunięciu określ nową wartość, która ma zostać pokazana, i ustaw ją na niewidoczną etykietę.
Następnie, animuj przejście przy użyciu funkcji animate(withDuration:animations:) z WKInterfaceController. W bloku animacji, zmienić wartości alpha wymagane, coś jak

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

nadzieję, że to pomaga!

+0

Mam to. Jest to rodzaj obejścia, ale zadziała. Niezły pomysł. Dzięki! –

+0

Będę nagradzać nagrodą w okresie karencji. Będę czekać, jeśli otrzymam jakieś lepsze rozwiązanie. Nadzieję, że rozumiecie! –

+0

Nie ma problemu! I, oczywiście, wystarczy zmienić wartość alfa górnej etykiety ... –

2

try: -

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

Robię tę pracę w watchOS i uiimageview, a uiview nie są dostępne w watchOS. Czy możesz podać jakieś inne rozwiązanie? Co to jest labelrate? I dlaczego przekazujesz img w funkcji? –