iPhone: как сделать анимацию presentModalViewController слева направо - PullRequest
11 голосов
/ 27 декабря 2010

Я представляю вид модели с анимацией. По умолчанию это происходит снизу вверх. Как сделать так, чтобы анимация шла слева направо? Я знаю, что мог бы использовать навигационный контроллер. Но на самом деле представляемый вид не нуждается в панели навигации, а также модально представленный вид не требует панели навигации. Тем не менее я хочу перейти слева направо.

Ответы [ 6 ]

14 голосов
/ 20 ноября 2013

Вы можете анимировать справа налево, представляя контроллер представления, используя следующий код

CATransition *transition = [CATransition animation];
            transition.duration = 0.4;
            transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
            transition.type = kCATransitionPush;
            transition.subtype = kCATransitionFromRight;
            [self.view.window.layer addAnimation:transition forKey:nil];
            [self presentViewController:localitiesView animated:NO completion:nil];
9 голосов
/ 27 декабря 2010

Есть только четыре UIModalTransitionStyle s:

UIModalTransitionStyleCoverVertical
UIModalTransitionStyleFlipHorizontal
UIModalTransitionStyleCrossDissolve
UIModalTransitionStylePartialCurl

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

4 голосов
/ 12 мая 2011

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

    UIViewController *modalView = //init your UIViewController
    [modalView loadView];
    CGRect finalFrame = modalView.view.frame;
    [modalView.view setFrame:CGRectMake(-320, 0, self.view.frame.size.width, self.view.frame.size.height)];
    [UIView animateWithDuration:1.0 animations:^{
                    [self.navigationController setNavigationBarHidden:YES];
                    [self.view addSubview:modalView.view];
                    [modalView.view setFrame:finalFrame];
                }];

Надеюсь, это поможет.

2 голосов
/ 28 декабря 2010

UINavigationController имеет свойство navigationBarHidden - если вы установите его в YES, вы можете получить стиль перехода слева направо и другие тонкости навигационного контроллера, не имея видимой панели навигации.

1 голос
/ 26 ноября 2012

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

0 голосов
/ 27 декабря 2010

Вы можете попробовать что-то вроде этого:

   UIViewController *fooViewController = [[[UIViewController alloc] init] autorelease];

        CGSize theSize = CGSizeMake(320, 460);
        fooViewController.view.frame = CGRectMake(0 - theSize.width, 0, theSize.width, theSize.height);
        [UIView beginAnimations:@"animationID" context:NULL];

        fooViewController.view.frame = CGRectMake(0, 0, 320, 460);

        [UIView commitAnimations];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...