我正在尝试通过调用animateWithDuration
类的WKInterfaceController
来设置watchOS2应用程序中组的宽度。这个想法是向用户显示一条水平线,在一段时间内(如计时器)从右到左减小宽度:
self.timer.setWidth(100)
self.animateWithDuration(NSTimeInterval(duration)) {
self.timer.setWidth(0)
}
但是我看到动画开始后速度非常慢然后会增加。当动画即将停止时(当计时器宽度接近0时),动画再次减速。 我希望在动画的持续时间内速度相同。
以前有人有这个问题吗?任何帮助表示赞赏!感谢
答案 0 :(得分:1)
WatchOS 2没有提供指定计时功能的方法,因此动画仅限于使用EaseInEaseOut曲线(开始速度慢,加速,然后在结束时减速)。
您可以尝试using Core Graphics to render the line,或使用一系列WKInterfaceImage帧来平滑地为该线设置动画。
答案 1 :(得分:-1)
我在watchOS2应用程序中制作了一个我希望使用Core Graphics制作动画的计时器的简单示例。 您可以找到项目here
<强>更新强>: 这是我制作的代码:
func configureTimerWithCounter(counter: Double) {
let size = CGSizeMake(self.contentFrame.width, 6)
UIGraphicsBeginImageContext(size)
let context = UIGraphicsGetCurrentContext()
UIGraphicsPushContext(context!)
// Draw line
let path = UIBezierPath()
path.lineWidth = 100
path.moveToPoint(CGPoint(x: 0, y: 0))
let counterPosition = (self.contentFrame.width/30)*CGFloat(counter)
path.addLineToPoint(CGPoint(x: counterPosition, y: 0))
UIColor.greenColor().setStroke()
UIColor.whiteColor().setFill()
path.stroke()
path.fill()
// Convert to UIImage
let cgimage = CGBitmapContextCreateImage(context);
let uiimage = UIImage(CGImage: cgimage!)
// End the graphics context
UIGraphicsPopContext()
UIGraphicsEndImageContext()
self.timerImage.setImage(uiimage)
}