我在我的UIView上有多個基於用戶觸摸動畫/交互的動畫/交互式UIImageViews。我試圖添加一個功能,該功能可以通過觸摸圖標來「擺動」這些可動畫/交互式UIImageView,這將幫助用戶識別屏幕上的哪些對象是交互式的。我嘗試使用下面的代碼從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-index才能使其工作。我需要爲z-index設置什麼?並且每頁有3到4個UIImageView,我需要調用doWiggle:例程,我是否需要修復所有這些UIImageView的z索引?
沒有必要安排一個計時器去除,只需將您的重複計數設置爲2.0/0.1。動畫在完成時會自動從圖層中移除。 – nielsbot