:iOS에서 이미 애니메이션이 재생되는 동안보기 애니메이션이 시작되면 어떻게됩니까? 도면은 주 화면을 탭의 제스처 인식기에 의해 애니메이션
-(void) doAnimate {
[UIView animateWithDuration:3
animations:^{
self.circleView.center = CGPointMake(100, 300);
}
completion:^(BOOL finished) {
NSLog(@"finished is %i", finished);
[UIView animateWithDuration:1 animations:^{
self.circleView.center = CGPointMake(250, 300);
}];
}
];
}
(체인이되는 애니메이션). 애니메이션을 적용하고 기본 뷰를 다시 탭하면 실제로는 두 번 호출되는 완료 핸들러 (처음에는 TRUE, 두 번째는 FALSE)가 표시됩니다. 거짓이라면 한 번만 부름 받았다고 생각 했나요? Apple's doc에서 찾을 수 없습니다. 이미 애니메이션이 적용될 때 애니메이션이 시작되면 어떻게 작동하는지에 대한 규칙이 있습니까? (나는 그것이 다시 애니메이션되는 동일한 뷰이며, 뷰 1은 애니메이션 동안 뷰 2가 움직이는 경우에는 적용되지 않습니다 적용 할 생각?)
업데이트 : 더 통찰력을 보여줄 수있는 다음 코드를
를-(void) dropAnimate:(UIGestureRecognizer *) g {
int n = arc4random() % 10000;
int y = 501 + arc4random() % 200;
NSLog(@"y is %i", y);
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, y, 10, 10)];
label.text = @"x";
[self.view addSubview:label];
[UIView animateWithDuration:3
animations:^{
NSLog(@"n is %i", n);
self.circleView.center = CGPointMake(100, y);
}
completion:^(BOOL finished) {
NSLog(@"n is %i", n);
NSLog(@"finished is %i y is %i", finished, y);
[UIView animateWithDuration:3 animations:^{
self.circleView.center = CGPointMake(250, y);
}
];
}
];
NSLog(@"finished the method call");
}
아래의 @ Kai의 답변 외에도 이미 진행중인 애니메이션이있는 경우 동일한 UIView 개체에 대한 새로운 애니메이션 규칙이있는 것으로 보입니다. 이전 애니메이션의 효과가 즉시 끝나고 새 애니메이션 가 실행되면 다음으로 이전 애니메이션의 completion
이와 함께 호출됩니다.3210이고 이제는 세 번째 애니메이션이 시작되어 애니메이션 2가 효과를 끝내지만 NO
과 함께 completion
블록이 호출되고 애니메이션 3이 즉시 적용됩니다. 애니메이션 4는 다음과 같이 실행됩니다. 3 초.
위의 샘플 코드를 시도해 볼 수 있습니다 ... 그리고 간단하게하기 위해 completion
블록을 제거한 다음 시도해보고 다음과 같은 규칙을 확인합니다. 동일한 객체에서 새 애니메이션을 시작하면,
그리고 completion
블록이 또 다른 애니메이션을 시작하면 completion
블록, 꽤 복잡 할 수
UIView의 apple doc에서 이상하게 보임 animateWithDuration : 애니메이션 : 완료 : 읽을 수 있음 : 애니메이션을 실행하는 동안 애니메이션이 재생되는 동안 사용자 상호 작용이 일시적으로 사용 중지됩니다. (iOS 5 이전에는 전체 애플리케이션에서 사용자 상호 작용이 사용 중지되었습니다.) – meronix
@meronix @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@) –
@kay : 미안하지만, 당신 말이 맞아요, 그가 "메인 뷰"를 탭핑했다고 썼다는 것을 깨닫지 못했습니다 ... 전혀 신비가 없습니다. – meronix