通过平滑推送转换和没有navigationcontroller来更改viewcontrollers

时间:2013-04-23 14:15:39

标签: ios objective-c animation ios6 presentviewcontroller

我正在尝试从viewcontroller view1更改为viewcontroller view2,并获得平滑且漂亮的过渡,其中view1在一秒内被view2推向左侧。我已经在iPhone应用程序中简单地说明了我想要的内容。

enter image description here - > enter image description here - > enter image description here - > enter image description here

我正在使用故事板并为iOS 6及更高版本开发。我没有使用segues。目前我正在使用此代码在Xcode中没有任何动画的情况下从view1更改为view2:

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

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

注意:我没有使用NavigationControllers!正常ViewControllers。我更愿意用代码来做这件事。

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

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

答案:我通过在项目中实施导航控制器解决了我的问题。我之前完全误解了导航控制器的整个概念,但我现在已经弄明白了。所以我的问题解决了!

2 个答案:

答案 0 :(得分: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)。希望这会帮助你。

我在我的应用程序中使用了这个代码,它对我来说很好。

答案 1 :(得分:0)

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