我正在设置按钮位置的动画,围绕一个圆圈旋转。这会产生类似UISwitch
的行为,除非它更加花哨。按钮旋转,但最终离开所需位置约0.25弧度。我正在试图弄清楚锚点的位置,使按钮围绕其原点旋转一个完美的圆圈。
这是我用来使按钮“轨道”的代码,其原始位置的半径为120像素。
float offsetX=120;
float offsetY=0;
enableDisableButton.layer.anchorPoint =
CGPointMake(offsetX/enableDisableButton.frame.size.width,
offsetY/enableDisableButton.frame.size.height);
我使用以下方法进行计算。为degrees
传递90的参数,我希望看到按钮从180˚位置开始移动到90˚,距其原点120像素
-(CGAffineTransform)calculateLabelPositionFromFixedPointWithOffsetClockwiseInDegrees:(float)degrees
{
float rotation = degrees*(2*M_PI/360);
CGAffineTransform transform24 = CGAffineTransformMakeRotation(rotation);
NSLog(@"rotation: %f", rotation);
return transform24;
}
这个小的0.25弧度偏差意味着我需要在视觉上确认每个按钮的位置,并且不能以编程方式轻松调整其位置。任何帮助确定旋转按钮的正确方法都是值得赞赏的。
我尝试了其他旋转对象的方法。例如,我有一个箭头
<--------x
,我想围绕x
围绕这个箭头旋转。此操作的正确定位点是什么?是[1,0.5]吗?
执行此类旋转的更简单方法是将对象放在对称UIView
内,将其居中于所需的旋转点并指定旋转变换。这有效,但要求视图大两倍:
Y----x----Y
&lt;这使Y绕中心点X旋转而没有任何锚点调整。这是在模拟仪表等中旋转箭头的非常有用的方法。
答案 0 :(得分:0)
&#34;进行这种旋转的一种更简单的方法是将对象放在对称的UIView中,将其置于所需的旋转点并指定旋转变换。&#34;这样很好。
答案 1 :(得分:0)
示例中enableDisableButton
的定位点是
CGPointMake(offsetX/enableDisableButton.frame.size.width, 0)
即。没有垂直居中的按钮。围绕锚点旋转将导致按钮偏移到期望位置的顶部或底部。变换看起来不错,所以我认为它只是一个锚点。它应该是:
CGPointMake(offsetX/enableDisableButton.frame.size.width, 0.5f)