在视图上旋转UIButtons

时间:2010-07-28 22:27:25

标签: iphone objective-c core-animation

我在UIView上有5个按钮,我想沿着圆形路径均匀地绘制,并让它们沿着该路径连续旋转。要清楚,我不想自己旋转按钮,我只是希望它们沿着圆形路径移动。

管理此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

为每个按钮创建UIBezierPathCGPath,调整起始角度和结束角度以考虑每个按钮的初始起点。然后为每个按钮/路径创建一个CAKeyframeAnimation,为其指定路径,将其设置为自动重复并将其添加到相应按钮的图层。

UIBezierPath方法+bezierPathWithArcCenter:radius:startAngle:endAngle:clockwise:将帮助您创建循环路径。你需要计算正确的角度,但这只是一小部分数学。

答案 1 :(得分: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 是包含所有按钮的视图。此时,您真正需要做的就是计算最初应该放置按钮的位置。其他一切都是为你处理的。