2016-04-14 4 views
2

В моем проекте есть функция, когда пользователь коромысло на верхней панели один появится экран с сверху вниз анимациейтолчка UIViewController к другому ViewController с анимацией, сверху - нижней

Есть два вид контроллера oneviewcontroller.m

- (void)swipe 
{ 
    listViewController *list_obj=[[listViewController alloc] initWithNibName:@"listViewController" bundle:NULL]; 
    UIViewAnimationTransition trans = UIViewAnimationTransitionCurlUp; 
    [UIView beginAnimations: nil context: nil]; 
    [UIView setAnimationTransition: trans forView: [self.view window] cache: YES]; 
    [self.navigationController pushViewController:list_obj animated:YES]; 
    [UIView commitAnimations]; 
} 

Но это не дает анимации из верхнего нижнего

Я хочу, чтобы осуществить навигацию от Пуш: = верхний - нижний Поп: = Нижняя - верхняя

, пожалуйста, помогите мне Спасибо

ответ

20

Вы можете нажать сверху вид контроллера вниз, как следует:

Obj-C:

- (void) pushVC:(UIViewController)dstVC { 
    CATransition transition = [CATransition animation]; 
    transition.duration = 0.5; 
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    transition.type = kCATransitionPush; 
    transition.subtype = kCATransitionFromTop; 
    [self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; 
    [self pushViewController:dstVC animated:NO]; 
} 

Используйте следующий код поп-вид сверху:

- (void) popVC { 
    CATransition transition = [CATransition animation]; 
    transition.duration = 0.5; 
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 
    transition.type = kCATransitionFade; 
    transition.subtype = kCATransitionFromBottom; 
    [self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; 
    [self popViewControllerAnimated:NO]; 
} 

Swift 3:

func open() { 
    let settingsVC = SettingsVC() 
    let transition = CATransition() 
    transition.duration = 0.5 
    transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 
    transition.type = kCATransitionPush; 
    transition.subtype = kCATransitionFromTop; 
    navigationController?.view.layer.add(transition, forKey: kCATransition) 
    navigationController?.pushViewController(settingsVC, animated: false) 
    } 

    func close() { 
    let transition = CATransition() 
    transition.duration = 0.5 
    transition.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseInEaseOut) 
    transition.type = kCATransitionFade 
    transition.subtype = kCATransitionFromBottom 
    navigationController?.view.layer.add(transition, forKey:kCATransition) 
    let _ = navigationController?.popViewController(animated: false) 
    } 
+0

Я принял ответы. Он работает отлично. Спасибо –

+0

@iOSdeveloper Спасибо :-) – Microprocessor8085

+0

Я бы поддержал, но я не имею права на голосование. Но я обязательно сделаю это, как только я заработаю эту репутацию. –

Смежные вопросы