如何更新正在运行的WKInterfaceImage动画?

时间:2017-04-26 22:59:49

标签: watchkit apple-watch

我在iWatch中使用自定义矩形计时器作为WKInterfaceImage。我们的想法是将持续时间设置为计时器上的长度,然后将定时器缩小为length = 0的动画。只要允许运行整个动画,它就可以正常工作。但是,如果我尝试更改动画正在运行的计时器长度,则会将新长度添加到当前长度。

所以基本上问题是,当我尝试添加一个新的长度时,它将旧的和新的长度组合到计时器,这使得它很长。

非常感谢一些帮助。

这是代码:

    -(void)setAnimatedTimer {
        NSLog(@"timer called");

        NSUserDefaults* defaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.daypal"];
        NSDate *NextActivityStartTime = [defaults objectForKey:@"watchStartDate"];
        NSDate *NextActivityEndTime = [defaults objectForKey:@"watchStopDate"];

        NSTimeInterval fromStartTimeToNow = [NextActivityStartTime timeIntervalSinceNow];
        NSTimeInterval fromEndTimeToNow = [NextActivityEndTime timeIntervalSinceNow];
        NSTimeInterval watchDuration = fromEndTimeToNow - fromStartTimeToNow;
        if (fromStartTimeToNow > 0 && fromEndTimeToNow > 0) {
            _watchActivityTimer.hidden = YES;

int watbchdurationlenght = watchDuration/100;

     [self.watchActivityTimer setRelativeWidth:watchDurationLenght withAdjustment:0.0];

 [self animateWithDuration:watchDuration animations:^{
        //  [self.watchActivityTimer setHorizontalAlignment:WKInterfaceObjectHorizontalAlignmentRight];
        [self.watchActivityTimer setWidth:0];

    }];


}

1 个答案:

答案 0 :(得分:0)

我解决了。当我添加块时,它工作。当动画运行时,它会创建具有长度的bugg。但是当我在开始新动画之前停止动画时,它解决了问题。

[self animateWithDuration:fromEndTimeToNow animations:^{

       [self.watchActivityTimer stopAnimating]; }
       completion:^{
           [self animateWithDuration:fromEndTimeToNow animations:^{
        [self.watchActivityTimer setRelativeWidth:0.0 withAdjustment:0.0];
           }
           completion:^{
               NSLog(@"timer animation completed");
               [self MessageiPhoneForNewActivity];

    }];

       }];}