【问题标题】:Changing viewcontrollers with smooth push transition and without navigationcontroller更改具有平滑推送过渡且没有导航控制器的视图控制器
【发布时间】:2013-04-16 19:20:27
【问题描述】:

我正在尝试从 viewcontroller view1 更改为 viewcontroller view2 并进行平滑而漂亮的过渡,其中 view1 在一秒钟内被 view2 推到左侧。我对我的 iPhone 应用程序做了一个简单的说明。

--> --> -->

我正在使用情节提要并为 iOS 6 及更高版本进行开发。我没有使用segues。目前我正在使用此代码从 view1 更改为 view2,而 Xcode 中没有任何动画:

SecondViewController *viewTwo = [self.storyboard instantiateViewControllerWithIdentifier:@"View2"];
[self presentViewController:viewTwo animated:NO completion:nil];

我正在寻找可以替换我现有代码的代码。通过推送转换从 view1 更改为 view2 的代码

注意:我没有使用NavigationControllers!正常ViewControllers。我宁愿用代码来做到这一点。

编辑:我知道如果我使用导航控制器,这将很容易做到,但问题是我已经完成了故事板的构建,并且我已经使用普通视图构建了所有内容控制器。这就产生了我的第二个问题:

有什么方法可以简单地将我的UIViewControllers 转换为UINavigationControllers。无需删除我的UIViewController 并仅使用UINavController 重新构建它?

回答:我通过在我的项目中实现导航控制器解决了我的问题。我之前完全误解了导航控制器的整个概念,但现在我已经弄清楚了。这样我的问题就解决了!

【问题讨论】:

  • 为什么不想使用导航控制器?如果你隐藏导航栏,你会得到你想要做的事情。
  • 我更喜欢非导航控制器来执行此操作,因为我的应用程序几乎完成了,我不想重新开始构建故事板,因为这将是一个地狱一份工作。为什么我更喜欢不使用导航控制器的答案。
  • 您的控制器需要处理旋转吗?如果是这样,您要么需要使用自定义容器控制器 api,要么需要一些非常复杂的代码才能使其正常工作。
  • 旋转是什么意思?如果您的意思是从垂直位置旋转视图,那么不,我不是指旋转。
  • 你知道可以隐藏导航控制器吗?

标签: ios objective-c animation ios6 presentviewcontroller


【解决方案1】:

为 view2 设置动画。使用此代码。

-(void)ViewNavigationOnLeftTabs
{
   self.view.frame=CGRectMake(420, 0,self.view.frame.size.width,self.view.frame.size.height);

    [UIView beginAnimations:@"Anim2" context:nil];
    [UIView setAnimationDuration:0.4];
    [UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
    [UIView setAnimationDelegate:self];
    self.view.frame=CGRectMake(0, 0,self.view.frame.size.width,self.view.frame.size.height);
    [UIView commitAnimations];
}
-(IBAction)nextView
{
    SecondViewController *sampleV=[[SecondViewController alloc] init];
    [self.view addSubview:sampleV.view];
    [self ViewNavigationOnLeftTabs];
}

这里我为 secondViewController 添加了过渡效果,完全符合您的要求。您需要在动画期间处理背景视图(view1)。

我在我的应用程序中使用了此代码,它对我来说运行良好。

【讨论】:

  • 感谢您的回复!我通过实现导航控制器解决了我的问题,不应该发布这个问题。但既然我已经发布了它,我会接受并支持你的答案,因为它回答了我最初的问题,即使我没有使用你的答案。
  • Apple 从 iOS 4 开始不鼓励使用这些方法,您应该改用基于块的方法。
【解决方案2】:

考虑使用容器视图控制器。这是一个教程: http://www.cocoanetics.com/2012/04/containing-viewcontrollers/

【讨论】:

  • 这不是我想要的。我不想添加任何容器视图控制器,因为我已经完成了整个故事板及其所有视图控制器的设置。这意味着我正在寻找代码来呈现 view2 与我在问题中解释的动画。
猜你喜欢
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
相关资源
最近更新 更多