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)
}
我正在尝试通过调用 WKInterfaceController
class 的 animateWithDuration
在我的 watchOS2 应用程序中设置组的宽度动画。这个想法是向用户显示一条水平线,该水平线在一段时间内从右到左减小其宽度(类似于计时器):
self.timer.setWidth(100)
self.animateWithDuration(NSTimeInterval(duration)) {
self.timer.setWidth(0)
}
但是我看到动画一开始速度就很慢然后增加。当动画即将停止时(当计时器宽度接近 0 时)动画再次变慢。 我希望在整个动画期间速度相同。
以前有人遇到过这个问题吗?任何帮助表示赞赏!谢谢
WatchOS 2 不提供指定计时功能的方式,因此动画仅限于使用 EaseInEaseOut 曲线(开始时速度较慢,然后加速,最后减速)。
您可以尝试
我做了一个简单的计时器示例,我想在 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)
}