0

我正在创建一个带有标准“Master-Detail”导航的 iPhone 应用程序,您可以在其中从 UITableView 中选择一个项目,并在 ViewController 中查看推送到屏幕上的项目的详细信息视图。

但是:与传统的 UINavigationController 不同,它从窗口的右侧推送详细信息屏幕,我希望我的详细信息屏幕从屏幕顶部下降。

我需要做什么才能做到这一点?我必须继承 UINavigationController 吗?(我听说这不是一个好主意)。我应该考虑子类化什么类?

4

1 回答 1

3

子类UINavigationController和覆盖pushViewController:animated:
不要立即调用 super 并且你自定义动画的东西是这样的:

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.

于 2012-12-28T21:37:13.917 回答