2017-09-13 62 views
7

我正在研究蘋果手錶應用程序。在應用程序中,我有一個視圖,用戶可以在3個給定結果之間左右滑動。我正在使用WKInterfaceLabel顯示結果信息。在每次滑動時,標籤都會更新爲新文本。Animate WKInterfaceLabel帶文字變化蘋果手錶swift

查看截圖:

Results screen

我想動畫文字上刷卡的變化。我怎樣才能做到這一點?

提供的任何幫助將不勝感激。 謝謝!

+0

難道我理解你的權利,你有一個單一的頁面,並且要通過左右滑動來改變標籤的內容? –

+0

@ReinhardMänner是的,你是對的。 –

+0

您是否嘗試在您的頁面中添加「WKSwipeGestureRecognizer」(docu [here](https://developer.apple.com/documentation/watchkit/wkswipegesturerecognizer))? –

回答

2

這不是很優雅,但它應該工作:
您可以淡出WKInterfaceLabel的內容,並在其位置中淡入其他標籤。因此,將2 WKInterfaceLabel對象放置在相同的位置。其中一個可見(alpha = 1.0),另一個不可見(alpha = 0.0)。
滑動時,確定應顯示的新值,並將其設置爲不可見標籤。
然後,使用WKInterfaceController的函數animate(withDuration:animations:)對動畫進行動畫處理。在動畫塊,根據需要更改的alpha值,像

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

希望這有助於!

+0

我明白了。這是一種解決方法,但它會起作用。不錯的主意。謝謝! –

+0

我將在寬限期內獎賞賞金。如果我得到更好的解決方案,我會等待。希望你能理解! –

+0

沒問題!當然,這足以改變上層標籤的alpha值... –

2

嘗試: -

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

我在watchOS和uiimageview中執行此項工作,uiview在watchOS中不可用。你能提供任何其他解決方案嗎?另外,什麼是標籤速度?你爲什麼要傳遞img函數? –