나는 UIView에 여러 개의 애니메이션 가능/대화 형 UIImageViews가있어 사용자 접촉을 기반으로 애니메이션/상호 작용합니다. 이 애니메이션 가능/대화 형 UIImageViews 아이콘을 터치하여 화면에서 대화 형 객체를 식별하는 데 도움이되는 "흔들림"기능을 추가하려고합니다. 나는 this 블로그에서 "호기심"운동을 달성하기 위해 다음 코드를 사용하는 것을 시도하고있다 :객관적인 C로 흔들리는 애니메이션
-(void)doWiggle:(UIView *)touchView {
// grabbing the layer of the tocuhed view.
CALayer *touchedLayer = [touchView layer];
// here is an example wiggle
CABasicAnimation *wiggle = [CABasicAnimation animationWithKeyPath:@"transform"];
wiggle.duration = 0.1;
wiggle.repeatCount = 1e100f;
wiggle.autoreverses = YES;
wiggle.toValue = [NSValue valueWithCATransform3D:CATransform3DRotate(touchedLayer.transform,0.1, 0.0 ,1.0 ,1.0)];
// doing the wiggle
[touchedLayer addAnimation:wiggle forKey:@"wiggle"];
// setting a timer to remove the layer
[NSTimer scheduledTimerWithTimeInterval: 2.0 target:self selector:@selector(endWiggle:) userInfo:touchedLayer repeats:NO];
}
-(void)endWiggle:(NSTimer*)wiggleTimer {
// stopping the wiggle now
[((CALayer*)wiggleTimer.userInfo) removeAllAnimations];
}
내 루틴에서 다음과 같이 호출 : [self doWiggle:imageAnimation];
를 imageAnimation가있는 UIImageView입니다. 나는 흔들 거리는 동안 이미지의 절반이 사라지는 것을 봅니다. 나는 이것이 작동하기 위해서는 z- 인덱스를 적절하게 설정해야한다고 읽었습니다. Z- 인덱스를 설정하려면 무엇이 필요합니까? 그리고 페이지 당 3 ~ 4 UIImageViews가 있는데 doWiggle : routine을 호출해야합니다. 모든 UIImageViews의 z- 인덱스를 수정해야합니까?
제거를 위해 타이머를 예약 할 필요가 없습니다. 반복 횟수를 2.0/0.1로 설정하면됩니다. 애니메이션은 완료되면 레이어에서 자동으로 제거됩니다. – nielsbot