2017-09-13 87 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函数? –