2011-04-12 91 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是一個按鈕上的多個方法的主題(可能是我的想法更好的選擇)。