How do I animate/rotate a UIView 90 degress from its upper right corner?

前端 未结 3 1361
清歌不尽
清歌不尽 2021-02-02 04:01

I\'ve been searching for hours trying to find a way to animate/rotate a UIView 90 degrees from the upper right corner.

The effect should almost work like a swinging door

相关标签:
3条回答
  • 2021-02-02 04:11

    You should try this code:

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

    }

    0 讨论(0)
  • 2021-02-02 04:20

    So right after I pressed enter I suddenly put two and two together and figured the Metronome sample worked kind of like a swinging door and that led me to a few other possibilities.

    Here's my solution:

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

    Hope this helps someone else too!

    0 讨论(0)
  • 2021-02-02 04:25

    You should try setting the anchor point of the layer to (0,1), and than animate the layer.

    0 讨论(0)
提交回复
热议问题