我試圖以圓形方式圍繞矩形創建點。 爲此,我創建了一個橢圓UIBezierPath,創建了一個CAKeyFrameAnimation併爲keyPath'position'設置路徑。CAKeyFrameAnimation在使用CGPath時沒有動畫效果
我設置了一個項目來試驗動畫並獲得了很好的效果。 問題是,當我將代碼添加到我的應用程序中時,點不是動畫。 我試圖添加相同的代碼到其他應用程序,它工作得很好。它不適用於那一個應用程序。
奇怪的是,如果我通過包含CGPoint的值的數組替換路徑,那麼點動畫。它只是不適用於CGPath的特定應用程序。
是否有隱藏的設置某處阻止CAKeyFrameAnimation使用CGPath? 還有另一種方法可以做到嗎?使用值不像曲線那樣曲線很好。
這裏是我以前沒有什麼幫助的代碼:
CAKeyframeAnimation *orbit = [CAKeyframeAnimation animation];
orbit.keyPath = @"position";
orbit.path = [self foregroundArcPath].CGPath;
orbit.duration = 0.7f;
orbit.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
orbit.repeatCount = HUGE_VALF;
orbit.calculationMode = kCAAnimationPaced;
[self.foregroundDot addAnimation:orbit forKey:@"orbit"];
就像我說的,此代碼的工作,只是沒有在這一個應用程序。 這是我在這裏的第一篇文章,對不起,如果它配製不好。
路徑很好,我驗證了很多次。我甚至嘗試過其他路徑和其他圖層。另外,當我將其添加到其他項目時,該代碼也可以工作看起來問題在於這個項目。某些東西必須關閉路徑上的層動畫,或者它是Apple的錯誤,我真的不知道。 –
這看起來很奇怪,如果沒有經過該項目的其餘代碼,就很難指出問題所在,否則就會出現bug。我唯一能想到的其他問題是foregroundDot是否支持視圖?因爲那麼你需要在動畫塊內部調用它來工作。如果它只是一個獨立的層,那麼我不知道。 – dunkmann00
foregroundDot是一個CAShapeLayer,作爲我在屏幕上顯示的視圖的子圖層添加。動畫的子層的位置應該沒問題。正如你所看到的,無論如何它都是在動畫塊中調用的。 –