我在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];
}];
}
答案 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];
}];
}];}