ios – 来自侧面的presentViewController动画

我有一个单独的视图应用程序,并希望在按右侧的导航栏按钮时显示一个新的ViewController.我通过以下代码调用此VC:
- (IBAction)createEntryButton:(id)sender {
    CreateEntryViewController *vc2 = [[CreateEntryViewController alloc] init];
    [self presentViewController:vc2 animated:TRUE completion:nil];
}

然而,根据我的UI,这个动画从底部带来了vc2,这似乎是违反直觉的.所以我的问题是:

如何使用presentViewController从右侧而不是底部显示我的vc2?

谢谢.

解决方法

最干净的是使用navigationController来推送和弹出视图.

如果您已经在NavigationController中

[self.navigationCtroller pushViewController:vc2 animated:TRUE completion:nil]

如果不是,请调整视图控制器添加到窗口的代码.如果您的VC是rootwindowController并且您没有使用故事板,那么这可能在您的AppDelegate中

如果您使用故事板,请调整故事板,以便您进入导航控制器

ELSE如果你因为任何原因不想这样::)只需使用[UIView animate:vc2.view ….]在2. VC的视图中手动设置动画.

内联编写 – 方法名称不匹配但显示一般方法

UIView *v = vc2.view;
CGRect f = v.frame;
f.origin.x += self.view.frame.size.width; //move to right

v.frame = f;

[UIView animateWithDuration:0.5 animations:^{
    v.frame = self.view.frame;
} completion:^(BOOL finished) {
   [self presentViewController:vc2 animated:NO completion:nil];
}];

在完成块中呈现视图控制器vc2非动画,就像你自己已经做过的那样

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...