2011-04-12 92 views
2

我想做出一些相对简单的事情,使用户触摸按钮时旋转90度,大部分我迄今为止所做的工作是第一次,但此后该图像赢得'移动。我希望它保持新的位置,然后从新位置旋转90度,我有 [UIView setAnimationBeginsFromCurrentState:YES];旋转UIImageView与核心动画

,但似乎并没有工作

我加一个NSTimer“重置”原始图像的方向,使车轮弹回原来的位置,然后当用户触摸它再次旋转。 ...然而这并不是我想要的。

有没有办法使图像保持旋转90度,因此用户四次触摸会使图像回到其原始位置。谢谢你的帮助!!

这里是示例代码


-(IBAction) rotatewheel:(id)sender { 

     [UIView setAnimationDuration:1]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    [UIView setAnimationRepeatCount:1]; 
    wheel.transform = CGAffineTransformMakeRotation(M_PI/4); 
    [UIView commitAnimations]; 

    returnwheelTimer = [NSTimer scheduledTimerWithTimeInterval:1.1 target:self selector:@selector (returnwheel) userInfo:nil repeats:NO]; 

} 

-(void) returnwheel { 

    [UIView beginAnimations:nil context:NULL]; 

    [UIView setAnimationDuration:.5]; 
    [UIView setAnimationBeginsFromCurrentState:YES]; 
    [UIView setAnimationRepeatCount:1]; 
    wheel.transform = CGAffineTransformMakeRotation(M_PI); 
    [UIView commitAnimations]; 

} 

回答

8

相反的:

wheel.transform = CGAffineTransformMakeRotation(M_PI/4); 

使用

wheel.transform = CGAffineTransformRotate(wheel.transform,M_PI/4); 

这样,它会应用新改造的探讨当前的一个,而不是取代它。

+0

真棒感谢您的快速反应,我补充说,它完美的作品 – Xana 2011-04-12 14:20:47

0

有三种简单的方法来实现这一点。
1)让你的应用程序在Unity3D等游戏引擎中,而不是在XCode中。制作旋转轮的动画并将其编写为按钮按下时启动。这样做相对简单,现有的许多教程都很好。我建议使用Avaam Studios的iGUI(我不隶属于他们或以任何方式存在偏见)。

2)创建一个带有照片数组的NSObject,并启动旋转按钮按下的轮子的停止动画动画。关于这个问题的线索可以找到here。 3)如果你想让车轮从其最后一个位置旋转90度,以便在点击四次后可以旋转整圈(36),那么需要采用不同的方法。我建议每次按下按钮时都要使用不同的相同按钮。这样你就不需要在推动次数上做数学运算。您将有四个不同的IBOutlet(每个按钮一个),每个按钮将a)将图像转动90度,然后b)消失并用另一个按钮替换。我还没有看到这个实际的实现,但它是可行的。 Here是一个按钮上的多个方法的主题(可能是我的想法更好的选择)。