일부 UILabels를 움직이는 간단한 for 루프가 있습니다. for 루프에 애니메이션 블록 코드가있는 이유는 분명히 애니메이션을 만들려는 라벨이 두 개 이상 있기 때문입니다.UIView 애니메이션이 for 루프에서 올바르게 실행되지 않습니다 - iOS
내 프로그램은 for 루프가 끝난 후에 매번 UILabels의 숫자를 하나씩 증가시킵니다. 그러나 숫자 증가 코드가 for 루프 이후에 오는 경우에도 애니메이션이 발생할 때까지 숫자가 이미 증가했습니다 (이는 내가 원하는 것은 아닙니다).
내가 가지고 있는지 잘 모르겠습니다. 문제를 올바르게 설명했다. 그러나 내가 묻는 것은 무엇이 었는지에 대해 설명했다. 애니메이션이 주 스레드에서 실행된다는 사실을 알고 있기 때문에 for 루프에서 올바른 순서로 애니메이션이 생성되도록하는 방법은 무엇입니까 ??? 당신의 시간, 댄에 대한
for (int loop = 0; loop < [number_arrange count]; loop++) {
if ([number_arrange[loop] integerValue] == checknum) {
[anim_check replaceObjectAtIndex:loop withObject:[NSNumber numberWithInteger:1]];
[UIView animateWithDuration:0.4 delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
((UILabel*)_labels_anim[loop]).transform = CGAffineTransformMakeScale(5.0, 5.0);
((UILabel*)_labels_anim[loop]).layer.anchorPoint = CGPointMake(0.5, 0.5);
((UILabel*)_labels_anim[loop]).frame = CGRectOffset(((UILabel*)_labels_anim[loop]).frame, 0.0, -20.0);
((UILabel*)_labels_anim[loop]).alpha = 0.0;
} completion:^(BOOL finished) {
((UILabel*)_labels_anim[loop]).transform = CGAffineTransformMakeScale(1.0, 1.0);
((UILabel*)_labels_anim[loop]).layer.anchorPoint = CGPointMake(0.5, 0.5);
((UILabel*)_labels_anim[loop]).frame = CGRectOffset(((UILabel*)_labels_anim[loop]).frame, 0.0, 20.0);
((UILabel*)_labels_anim[loop]).alpha = 1.0;
}];
}
}
감사 :
여기 내 코드입니다.
귀하의 코드에서 지침의 실행 순서를 예측할 수는 없습니다. 솔루션에서 제공하는 모든 레이블은 동시에 애니메이션으로 표시됩니다. 애니메이션에서 속성을 변경하는 이유와 완료 블록의 다른 항목으로 설정하는 이유에 대해 다소 혼란 스럽습니다. 알파 속성에만 기반하여 레이블이 모두 사라지고 다시 갑자기 나타납니다. – Rob
코드가 더 부드럽게 실행되는 동안 동기화 효과가 중지되지 않는 것 같습니다. 나는 애니메이션을 제거 할 때 for 루프를 모두 동기화 된 것처럼 보였다. 지금 유일한 문제는 if 문과 코드의 사본이 많이 있다는 것입니다. (for 루프가 애니메이션이나 무언가를 지연 시키 리라 생각합니까?) – Supertecnoboff
나는 당신이 성취하려는 것을 조금 혼란스럽게 생각합니다. 모든 레이블을 동시에 이동 시키려고합니까? 아니면 한 번에 하나씩 움직이기를 원하십니까? – Rob