2011-10-12 84 views
1

我在我的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索引?

+0

沒有必要安排一個計時器去除,只需將您的重複計數設置爲2.0/0.1。動畫在完成時會自動從圖層中移除。 – nielsbot

回答

0

你打電話doWiggle之前,您可能需要爲此代碼:

[TouchView中上海華] bringSubviewToFront:TouchView中]。

如果您在做動畫之前可以看到整個視圖,那麼這可能無法解決您的問題。圖像視圖可能會縮放圖像,導致動畫過程中出現問題。您可能需要使用圖像編輯程序重新調整圖像以適應視圖內部的視圖,而不會縮放視圖。如果您沒有靜態圖像(即加載網絡等),您也可以通過編程的方式進行此操作。