2010-07-28 98 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