0

我正在尝试创建我的第一个 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];
    }

我的问题是箭头在旋转之前“移动”,每次我调用该方法。我尝试了各种方法来使旋转角度居中,但没有任何运气。

我希望箭头(图像)围绕自己的轴旋转。

4

1 回答 1

4

这是因为您的视图围绕 旋转(0, 0),这是您视图的左上角。你会想围绕箭头的中心旋转。

为此,您必须构建执行以下操作的转换:

  1. 平移箭头,使其中心位于(0, 0)
  2. rad以度为单位旋转视图。
  3. 将箭头向后平移((1) 的逆变换)。

它应该类似于(直到翻转 t1 和 t3):

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;
于 2013-06-30T18:22:58.400 回答