나는 여러 개의 애니메이션을 가진 앱을 가지고 있는데, 단순한 이미지이고, 단지 이미지가 오프 스크린에서 화면으로 이동 한 다음 오프 스크린으로 돌아 간다. 애니메이션 블록을 사용하고 있는데 코드는 다음과 같습니다.objective-c, 애니메이션 블록 무작위 화
void (^animationOne) (void) = ^{imageOne.center = d;};
void (^afterOne) (BOOL) = ^(BOOL f) {imageOne.center = dOrig;};
[UIView animateWithDuration:.85 delay:3 options:opts animations:animationOne completion:afterOne];
다소 차이가있는 형식이 여러 가지 있습니다. 그러나, 나는 그들이 무작위로 나타나는 순서를 원한다. 문제의 일부는 애니메이션과 완성 블록이 서로 관련이 있고 필요하다는 것입니다. 따라서 애니메이션을 배열에 집어 넣고 셔플 한 다음 애니메이션에 사용할 수는 없습니다. 애니메이션 블록을 사용하여 무작위로 추출 할 수있는 방법이 있습니까? 그렇지 않은 경우 순서를 임의화할 수 있도록 다른 방법이 있습니까? 감사.
편집 : vikingosegundo에서 몇 가지 유용한 제안 덕분에, I는 다음과 같이 사용하려면 코드를 변경했습니다
지금은 프로그램이 신호를 수신 한 수신하고 있습니다 그러나NSArray *animationsCompletions = [NSArray arrayWithObjects:
[NSDictionary dictionaryWithObjectsAndKeys:anim1,@"animation",after1, @"completion", nil],
[NSDictionary dictionaryWithObjectsAndKeys:anim2,@"animation",after2, @"completion", nil],
[NSDictionary dictionaryWithObjectsAndKeys:anim3,@"animation",after3, @"completion", nil],
[NSDictionary dictionaryWithObjectsAndKeys:anim4,@"animation",after4, @"completion", nil],
nil];
NSDictionary *animationCompletionPair = [animationsCompletions randomElement];
[UIView animateWithDuration:.85 delay:3 options:opts animations:[animationCompletionPair objectForKey:@"animation"] completion:[animationCompletionPair objectForKey:@"completion"]];
[UIView animateWithDuration:.85 delay:8 options:opts animations:[animationCompletionPair objectForKey:@"animation"] completion:[animationCompletionPair objectForKey:@"completion"]];
[UIView animateWithDuration:.85 delay:13 options:opts animations:[animationCompletionPair objectForKey:@"animation"] completion:[animationCompletionPair objectForKey:@"completion"]];
[UIView animateWithDuration:.85 delay:18 options:opts animations:[animationCompletionPair objectForKey:@"animation"]completion:[animationCompletionPair objectForKey:@"completion"]];
: EXC_BAD_ACCESS 오류를 할 때 볼 수있는 애니메이션이로드하려고 시도하고 컴파일러에서 다른 정보를 제공하지 않습니다. 모든 제안을 부탁드립니다.
오케이, 나는 이것을 시험해보고 작동 여부를 다시 알려 드리겠습니다. 감사합니다! :) – lunadiviner
나를 믿어, 그것 작품 :) – vikingosegundo
물론,이 코드와 함께 애니메이션과 완성을 연결하려면 하나의 컬렉션에 하나의 애니메이션과 하나의 완료를 수집하고 이것을 배열에 넣어야합니다. – vikingosegundo