我正在创建一个应用程序,我需要有这么多的导航控制器,并且在每个navcontroller中,我的所有元素(按钮,图像等)都相同,除了两个uilabel。客户希望在instagram应用之类的navcontrollers之间切换时具有“滑动”动画。我想知道是否有可能“模拟”两个导航控制器的开关并仅更改uilabels

最佳答案

如果很多UIViewControllers具有相同的UIBarButton项,强烈建议您使用一个通用的 super class ,例如“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];

关于ios - 伪造的UINavigationController幻灯片动画,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34841732/

10-13 08:35