2010-07-28 96 views
0

我有一個UIView上的5個按鈕,我想沿圓形路徑均勻地繪圖,並讓它們沿着該路徑不斷旋轉。要清楚,我不想旋轉按鈕本身,我只是希望他們沿着圓形路徑移動。在視圖上旋轉UIButtons

什麼是最好的管理方式?

回答

1

爲每個按鈕創建一個UIBezierPathCGPath,調整起始角度和結束角度以考慮每個按鈕的初始起始點。然後爲每個按鈕/路徑創建一個CAKeyframeAnimation,爲其指定路徑,將其設置爲自動重複並將其添加到適當的按鈕圖層。

UIBezierPath方法+bezierPathWithArcCenter:radius:startAngle:endAngle:clockwise:將幫助您創建循環路徑。你需要計算正確的角度,但這只是一小部分的數學。

1

沒有理由沿路徑單獨爲每個按鈕設置動畫效果。你說你在UIView上有5個按鈕。只需旋轉已添加到的視圖,其他所有按鈕都將旋轉,從而獲得與您要求的路徑相同的效果。

關鍵是你需要一個明確的動畫,而不是UIView的動畫快捷鍵:

CABasicAnimation* rotationAnimation = 
      [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; 
[rotationAnimation setToValue:[NSNumber numberWithFloat:DegreesToRadians(360)]]; 
// Make a full rotation in five seconds 
[rotationAnimation setDuration:5.0]; 
// Repeat forever. 
[rotationAnimation setRepeatCount:HUGE_VALF]; 
// Make the animation timing linear 
[rotationAnimation setTimingFunction: 
         [CAMediaTimingFunction 
         functionWithName:kCAMediaTimingFunctionLinear]]; 

[[rotationView layer] addAnimation:rotationAnimation forKey:nil]; 

變量rotationView是包含所有按鈕的視圖。在這一點上,你真正需要做的是計算你的按鈕應該放置在哪裏。其他一切都是爲你處理的。

+0

是的,這是非常棘手的......但按鈕文本或按鈕圖像...它也旋轉.... – makboney 2011-03-22 07:22:35