Изменить анимацию навигации управления

Я удивляюсь, можно ли изменить анимацию контроллера навигации на что-то, где вместо нового вида просто скользит по виду, а текущий вид скользит по мере скольжения нового вида...

У меня есть эта функция, которая просто обнаруживает мои пролистывания, а затем анимирует представления, как это делал бы обычный навигационный контроллер... но я надеюсь, что с вашей помощью смогу найти что-то еще.

// Need to change this to work with viewArray
- (void)swipedScreen:(UISwipeGestureRecognizer*)gesture {

    //Left swipe
    if (gesture.direction == UISwipeGestureRecognizerDirectionLeft) 
    {
        if (viewCount == 0) 
        {     
            viewCount += 1;
            // Load a detial view into the (sub)NavController
            DetailViewControllerA *detailViewA = [[DetailViewControllerA alloc] initWithNibName:@"DetailViewControllerA" bundle:[NSBundle mainBundle]];
            [otherNav pushViewController:detailViewA animated:YES];
        }
    }
    //Right swipe
    else if (gesture.direction == UISwipeGestureRecognizerDirectionRight)
    {
        if (viewCount == 1) 
        {
            viewCount -= 1;
            [self.otherNav popViewControllerAnimated:YES]; 
        }
    }  
}

1 ответ

Решение

Вы можете сделать это с помощью анимационных блоков uiView, таких как этот, который я использую, чтобы показать один мигающий UIView.

[UIView animateWithDuration:1.0 
                          delay:0.0 
                        options:UIViewAnimationCurveEaseInOut 
                     animations:^ {
                         self.splash.alpha = 0.2;
                     } 
                     completion:^(BOOL finished) {
                         [UIView animateWithDuration:1.0 animations:^{
                             self.splash.alpha = 1.0;
                         }];
                     }];

или же

используя код ниже

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.window cache:YES];
    [UIView setAnimationDuration:0.75];
    [UIView setAnimationDelegate:self];
    [self.splash removeFromSuperview];
    [UIView commitAnimations];

для флип-перехода

и для изменения анимации push/pop я использую этот код

    [UIView  beginAnimations:nil context:NULL];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    [UIView setAnimationDuration:0.75];
    [self.navigationController pushViewController:self.detailViewController animated:NO];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.navigationController.view cache:NO];
    [UIView commitAnimations];

наслаждайтесь кодингом:)

Удачной Коддинга:)

Другие вопросы по тегам