我正在创建一个带有标准“Master-Detail”导航的iPhone应用程序,您可以在其中从UITableView中选择一个项目,并查看推送到屏幕上的ViewController中项目的Detail视图。
然而:与传统的UINavigationController不同,传统的UINavigationController从窗口的右侧推出细节屏幕,我想让我的细节屏幕从屏幕顶部下来。
我需要做什么?我是否必须继承UINavigationController? (我听说这不是个好主意)。我应该考虑哪些类进行子类化?
答案 0 :(得分:3)
子类UINavigationController
并覆盖pushViewController:animated:
。
不要立即打电话给超级,你做这样的自定义动画:
nextViewController.view.transform = CGAffineTransformMakeTranslation(0, -nextViewController.view.frame.size.height);
void(^animationBlock)(void) = ^{
[super pushViewController:nextViewController animated:NO];
nextViewController.view.transform = CGAffineTransformIdentity;
};
if (animated) {
[UIView animateWithDuration:0.3f animations:animationBlock];
}
else{
animationBlock();
}
您实际上不需要继承UINavigationController
。每次将VC推送到常规UINavigationController
时,您也可以执行上述动画。