我正在尝试创建我的第一个iPhone应用程序。该应用程序只是一个指向北方的箭头。 到目前为止,我已经添加了一个箭头图像,并通过以下代码创建了一个动画:
- (void)setDirection:(float)degree {
float rad = M_PI * (float)degree / 180.0;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:10];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
//[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
DirectionArrow.transform = CGAffineTransformMakeRotation(rad);
[UIView commitAnimations];
}
我的问题是每次调用方法时箭头在旋转之前“移动”。我试过各种各样的东西来控制旋转角度,但没有任何运气。
我希望箭头(图像)围绕自己的轴旋转。
答案 0 :(得分:4)
这是因为您的视图围绕(0, 0)
旋转,(0, 0)
是视图的左上角。你想要围绕箭头的中心旋转。
为此,您必须构建一个执行以下操作的转换:
rad
。CGFloat h = view.bounds.size.height;
CGFloat w = view.bounds.size.width;
CGAffineTransform t1 = CGAffineTransformMakeTranslation(-w/2, -h/2);
CGAffineTransform t2 = CGAffineTransformMakeRotation(rad);
CGAffineTransform t3 = CGAffineTransformMakeTranslation(w/2, h/2);
CGAffineTransform t = CGAffineTransformConcat(CGAffineTransformConcat(t3, t2), t1);
DirectionArrow.transform = t;
度旋转视图。它应该是(最多翻转t1和t3):
{{1}}