在视图上旋转UIButtons

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

管理这个最好的方法是什么?


为每个按钮创建一个UIBezierPathCGPath ,调整起始角度和结束角度以考虑每个按钮的初始起点。 然后为每个按钮/路径创建一个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是包含所有按钮的视图。 在这一点上,你真正需要做的是计算你的按钮应该放置在哪里。 其他一切都是为你处理的。

链接地址: http://www.djcxy.com/p/74231.html

上一篇: Rotating UIButtons on a view

下一篇: Animating layoutIfNeeded on UITableView without animating UITableViewCells