在视图上旋转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