2010-11-01 12 views
7

मैं ऊपरी दाएं कोने से UIView 90 डिग्री को एनिमेट/घुमाने के लिए एक रास्ता खोजने का प्रयास करने के लिए घंटों की खोज कर रहा हूं।मैं अपने ऊपरी दाएं कोने से UIView 90 डिग्री को कैसे एनिमेट/घुमा सकता हूं?

प्रभाव लगभग स्क्रीन के शीर्ष से स्विंगिंग दरवाजे की तरह काम करना चाहिए।

उम्मीद है कि कोई मदद कर सकता है!

उत्तर

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

+1

मैं 90 डिग्री == M_PI_2 – Ralphleon

+2

# DEGREES_RADIANS (कोण) (कोण)/180.0 * एमएफआई) –

0

आपको परत के एंकर पॉइंट को (0,1) पर सेट करने और परत को एनिमेट करने की कोशिश करनी चाहिए।

+0

वे परत ज़ाहिर है, है, देखने के परत। – tadejsv

+0

मुझे पता चला कि मेरा प्रश्न पोस्ट करने के तुरंत बाद layer.anchorPoint और view.center अपराधी थे। शीघ्र जवाब देने के लिए ध्न्यवाद! – dandax

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

}