Как мне анимировать / вращать разложение UIView 90 из его верхнего правого угла? - PullRequest
7 голосов
/ 01 ноября 2010

Я искал часы, пытаясь найти способ анимировать / повернуть UIView на 90 градусов от верхнего правого угла.

Эффект должен работать почти как распашная дверь сверху экрана.

Надеюсь, кто-нибудь может помочь!

Ответы [ 3 ]

25 голосов
/ 02 ноября 2010

Итак, сразу после того, как я нажал enter, я неожиданно соединил два и два и понял, что образец Metronome работает как вращающаяся дверь, и это привело меня к нескольким другим возможностям.

Вот мое решение:

- (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 голосов
/ 24 июля 2012

Вы должны попробовать этот код:

-(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 голосов
/ 01 ноября 2010

Вы должны попытаться установить точку привязки слоя в (0,1), а затем анимировать слой.

...