2010-11-01 15 views

cevap

25

Basın bastıktan hemen sonra aniden iki ve ikiyi bir araya getirdim ve Metronome örneğinin sallanan bir kapı gibi çalıştığını fark ettim ve bu da bana birkaç olasılık getirdi. Bu çok başkası yardımcı olur

- (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]; 
} 

Umut:

İşte benim çözüm!

+0

BTW, bu cevap beni Metronom örneğinden farklı bir canlandırmaya götürdü. Sanırım biraz daha temiz. http://stackoverflow.com/questions/929364/how-to-create-iphones-wobbling-icon-effect/930101#930101 – dandax

+1

Kullanıyorum 90 ° == M_PI_2 – Ralphleon

+2

#define DEGREES_RADIANS (açı) (açı)/180.0 * M_PI) –

0

Katmanın çapa noktasını (0,1) olarak ayarlamayı ve katmanı canlandırmayı denemelisiniz.

+0

Onlar tabaka, elbette, görüş tabakasıdır. – tadejsv

+0

Sorularımın gönderilmesinden kısa bir süre sonra layer.anchorPoint ve view.center suçlulukları olduğunu anladım. Hızlı cevabınız için teşekkür ederim! – dandax

-4

Bu kodu denemelisiniz:

-(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]; 

}

İlgili konular