我正在开发一个自定义的矩形定时器,作为我的iWatch中的一个WKInterfaceImage。其思想是将持续时间设置为计时器上的长度,然后将计时器设置为缩小到长度= 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];
}];
}发布于 2017-04-28 06:24:56
我解决了。当我添加块时,它起作用了。当动画运行时,它会创建具有该长度的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];
}];
}];}https://stackoverflow.com/questions/43645906
复制相似问题