2010-11-01 97 views

回答

25

所以我按下後進入我突然把兩個和兩個在一起,並認爲節拍器樣品工作有點像一個搖擺門,這導致了我一些其他的可能性。

這裏是我的解決方案:

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    // Set the anchor point and center so the view swings from the upper right 
    swingView.layer.anchorPoint = CGPointMake(1.0, 0.0); 
    swingView.center = CGPointMake(CGRectGetWidth(self.view.bounds), 0.0); 

    // Rotate 90 degrees to hide it off screen 
    CGAffineTransform rotationTransform = CGAffineTransformIdentity; 
    rotationTransform = CGAffineTransformRotate(rotationTransform, DegreesToRadians(90)); 
    swingView.transform = rotationTransform; 
} 

... 

- (void)animateSwing { 

    CGAffineTransform swingTransform = CGAffineTransformIdentity; 
    swingTransform = CGAffineTransformRotate(swingTransform, DegreesToRadians(0)); 

    [UIView beginAnimations:@"swing" context:swingView]; 
    [UIView setAnimationDuration:0.25]; 

    swingView.transform = swingTransform; 

    [UIView commitAnimations]; 
} 

希望這有助於別人呢!

+0

順便說一下,這個答案是什麼導致我從節拍器樣本不同的動畫。我認爲它更清潔一點。 http://stackoverflow.com/questions/929364/how-to-create-iphones-wobbling-icon-effect/930101#930101 – dandax 2010-11-02 13:10:36

+1

我會用90°== M_PI_2 – Ralphleon 2013-02-26 16:41:02

+2

#define DEGREES_RADIANS(angle)((angle)/ 180.0 * M_PI) – 2014-09-04 11:47:56

0

您應該嘗試將圖層的錨點設置爲(0,1),然後設置圖層的動畫效果。

+0

它們層,當然,視圖層。 – tadejsv 2010-11-01 20:00:07

+0

我發現在發佈我的問題後不久,layer.anchorPoint和view.center就是罪魁禍首。感謝您及時的回覆! – dandax 2010-11-02 13:06:12

-4

你應該試試這個代碼:

-(void)doRotationView{ 
[UIView beginAnimations:@"flipping view" context:nil]; 
    [UIView setAnimationDuration:1];  
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    [UIView setAnimationTransition: UIViewAnimationTransitionFlipFromLeft  
          forView:self cache:YES]; 
    if (flagFront == 1) { 
     flagFront =0; 
     [self.viewSecond setHidden:NO]; 
     [self.viewFirst setHidden:YES]; 
    } 
    else{ 
     flagFront =1; 
     [self.viewSecond setHidden:YES]; 
     [self.viewFirst setHidden:NO];   
    } 
    [UIView commitAnimations]; 

}