Как анимировать вид слева направо в iPhone? - PullRequest
5 голосов
/ 08 декабря 2010

Как анимировать переход вида слева направо (аналог push view).Когда я нажимаю кнопку, представление должно проходить слева направо.Поэтому, пожалуйста, проведите меня и дайте несколько примеров ссылок.

Спасибо.

Ответы [ 4 ]

3 голосов
/ 08 декабря 2010

Предположим, что вы хотите нажать view2 справа, чтобы заменить view1.

// Set up view2
view2.frame = view1.frame;
view2.center = CGPointMake(view1.center.x + CGRectGetWidth(view1.frame), view1.center.y);
[view1.superview addSubview: view2];
// Animate the push
[UIView beginAnimations: nil context: NULL];
[UIView setAnimationDelegate: self];
[UIView setAnimationDidStopSelector: @selector(pushAnimationDidStop:finished:context:)];
view2.center = view1.center;
view1.center = CGPointMake(view1.center.x - CGRectGetWidth(view1.frame), view1.center.y);
[UIView commitAnimations];

Затем (необязательно) реализуйте этот метод для удаления view1 из иерархии представлений:

- (void) pushAnimationDidStop: (NSString *) animationID finished: (NSNumber *) finished context: (void *) context {
    [view1 removeFromSuperview];
}

В этом методе делегата анимации вы также можете освободить view1 и установить его ссылку наноль, в зависимости от того, нужно ли держать его после перехода.

1 голос
/ 20 ноября 2013

Другой вариант - использовать блоки для анимации с меньшим количеством строк кода и для простоты:

Вот образец

CGRect viewLeftRect;//final frames for left view
CGRect viewRightRect;//final frames for right view

[UIView animateWithDuration:0.3f animations:^{
    [viewLeft setFrame:viewLeftRect];
    [viewRight setFrame:viewRightRect];
} completion:^(BOOL finished) {
    //do what ever after completing animation
}];
1 голос
/ 20 ноября 2013

Для анимации слева направо вы можете использовать приведенный ниже блок кода

    CATransition *transition = [CATransition animation];
    transition.duration = 0.4;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromLeft;
    [self.view.window.layer addAnimation:transition forKey:nil];
    [self presentViewController:YOUR_VIEWCONTROLLER animated:YES completion:nil];
0 голосов
/ 03 декабря 2014

Вы также можете добавить анимацию справа налево следующим образом:

    scrAnimation.frame=CGRectMake(248, 175, 500, 414);  //your view start position

    [UIView animateWithDuration:0.5f
                          delay:0.0f
                        options:UIViewAnimationOptionBeginFromCurrentState
                     animations:^{
                         [scrAnimation setFrame:CGRectMake(0, 175, 500, 414)];   // last position
                     }
                     completion:nil];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...