2017-04-26 8 views
0

저는 사용자 정의 사각형 타이머를 iWatch의 WKInterfaceImage로 사용하고 있습니다. 아이디어는 타이머의 길이로 지속 시간을 설정 한 다음 길이 = 0으로 축소하는 타이머에 애니메이션을 적용하는 것입니다. 전체 애니메이션을 실행할 수있는 한 잘 작동합니다. 그러나 애니메이션을 실행하는 동안 타이머 길이를 변경하려고하면 현재 길이에 새 길이가 추가됩니다.실행중인 WKInterfaceImage 애니메이션을 업데이트하는 방법은 무엇입니까?

그래서 근본적으로 문제는 내가 새로운 길이를 추가하려고 할 때 오래된 것과 새로운 길이가 오래 걸리는 타이머에 결합된다는 것입니다.

정말 도움이 되겠습니까.

Here's 코드 :

-(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

내가 그것을 해결했다. 블록을 추가 할 때 작동했습니다. 애니메이션이 실행될 때 길이가있는 버그를 생성합니다. 그러나 새로운 애니메이션을 시작하기 전에 애니메이션을 중단하면 문제가 해결됩니다.

[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]; 

    }]; 

     }];}