我有一個UIView上的5個按鈕,我想沿圓形路徑均勻地繪圖,並讓它們沿着該路徑不斷旋轉。要清楚,我不想旋轉按鈕本身,我只是希望他們沿着圓形路徑移動。在視圖上旋轉UIButtons
什麼是最好的管理方式?
我有一個UIView上的5個按鈕,我想沿圓形路徑均勻地繪圖,並讓它們沿着該路徑不斷旋轉。要清楚,我不想旋轉按鈕本身,我只是希望他們沿着圓形路徑移動。在視圖上旋轉UIButtons
什麼是最好的管理方式?
爲每個按鈕創建一個UIBezierPath
或CGPath
,調整起始角度和結束角度以考慮每個按鈕的初始起始點。然後爲每個按鈕/路徑創建一個CAKeyframeAnimation,爲其指定路徑,將其設置爲自動重複並將其添加到適當的按鈕圖層。
UIBezierPath
方法+bezierPathWithArcCenter:radius:startAngle:endAngle:clockwise:
將幫助您創建循環路徑。你需要計算正確的角度,但這只是一小部分的數學。
沒有理由沿路徑單獨爲每個按鈕設置動畫效果。你說你在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是包含所有按鈕的視圖。在這一點上,你真正需要做的是計算你的按鈕應該放置在哪裏。其他一切都是爲你處理的。
是的,這是非常棘手的......但按鈕文本或按鈕圖像...它也旋轉.... – makboney 2011-03-22 07:22:35