假UINavigationController幻灯片动画

时间:2016-01-17 18:04:41

标签: ios objective-c

我正在创建一个应用程序,我需要拥有如此多的导航控制器,并且在每个导航控制器中我都有相同的元素(按钮,图像等),除了两个uilabels。客户想要"滑动"在像instagram app这样的navcontrollers之间切换时的动画。我想知道是否有可能"模拟"切换两个导航控制器,只需更改uilabels

1 个答案:

答案 0 :(得分:1)

如果很多UIViewControllers都有相同的UIBarButton项,我强烈建议你有一个像" BaseViewController"这样的公共超类。 每个UIViewController都是BaseViewController的子类,而不是标准的UIViewController。

使用此模式,您可以在BaseViewController上配置默认的UINavigationBar,方法是添加始终存在的按钮和图像,并仅在需要时自定义(通过添加您正在讨论的UILabel)

Instagram动画是您通过将新的UIViewController推送到navigationController堆栈上而实现的默认iOS动画:

[self.navigationController pushViewController:controller animated:YES];

在评论部分回复您的问题:

它已经从左到右,但如果你想要,你也可以从右到左制作动画。请查看:

YourViewController  *pageView = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];

CATransition *transition = [CATransition animation];
transition.duration = 0.45;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault];
transition.type = kCATransitionFromLeft;
[transition setType:kCATransitionPush];
transition.subtype = kCATransitionFromLeft;
transition.delegate = self;
[self.navigationController.view.layer addAnimation:transition forKey:nil];
[self.navigationController pushViewController:pageView animated:NO];