watchOS2 animateWithDuration 启动缓慢并加速

watchOS2 animateWithDuration starts slow and speeds up

我正在尝试通过调用 WKInterfaceController class 的 animateWithDuration 在我的 watchOS2 应用程序中设置组的宽度动画。这个想法是向用户显示一条水平线,该水平线在一段时间内从右到左减小其宽度(类似于计时器):

self.timer.setWidth(100)
self.animateWithDuration(NSTimeInterval(duration)) {
    self.timer.setWidth(0)
}

但是我看到动画一开始速度就很慢然后增加。当动画即将停止时(当计时器宽度接近 0 时)动画再次变慢。 我希望在整个动画期间速度相同。

以前有人遇到过这个问题吗?任何帮助表示赞赏!谢谢

WatchOS 2 不提供指定计时功能的方式,因此动画仅限于使用 EaseInEaseOut 曲线(开始时速度较慢,然后加速,最后减速)。

您可以尝试 ,或使用一系列 WKInterfaceImage 框架来平滑地动画线条。

我做了一个简单的计时器示例,我想在 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)

}