2013-06-25 130 views
0

在我的應用程序IM顯示不同的屏幕是這樣的:IOS動畫沒有導航控制器

info = [[Info alloc]initWithNibName:@"Info" bundle:nil]; 
[self.view addSubview:info.view]; 

信息是的UIViewController的一個子類,所以我只是創建它,並將其添加爲當前視圖的一個子視圖。

當我想放棄了,我只是做:

[self.view removeFromSuperview]; 

林不知道這是否是做的正確的方式,但昨天蘋果發佈了應用商店的另一個應用程序,做同樣的顯示觀點。

我的問題是,我如何動畫視圖之間的過渡,所以當我打電話給addsubview它做動畫?

我嘗試這樣做:

 info = [[Info alloc]initWithNibName:@"Info" bundle:nil]; 
     [UIView beginAnimations:nil context:nil]; 
     [UIView setAnimationDuration:1.0]; 
     [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight 
           forView:info.view 
           cache:YES]; 
     [self.view addSubview:info.view]; 
     [UIView commitAnimations]; 

但其沒有工作,這不要做任何事情。

+0

你的問題標題有導航控制器。那個怎麼樣? – Durgaprasad

回答

1

添加視圖控制器的觀點,使用這種

ChildViewController * child = [[ChildViewController alloc] initWithNibName:@"ChildViewController" bundle:nil]; 
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.0]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight 
          forView:info.view 
          cache:YES]; 
[self.view addSubview:child.view]; 
[UIView commitAnimations]; 

[self addChildViewController:child]; 
[child release];//for NON ARC 

刪除視圖使用此...

for (UIViewController *childVC in [self childViewControllers]) 
{ 
    [childVC removeFromParentViewController]; 
} 
[self.view removeFromSuperview];// YOU CAN ADD ANIMATIONS HERE 
[self removeFromParentViewController]; 

希望這將幫助你,這是對我工作的罰款....

+0

真的非常感謝,我不知道我必須使用setanimationtransition之前的觀點,我正在使用我想要顯示的視圖,現在它完美。 – Nanoc

+0

歡迎您隨時問任何幫助.. –

4

這不是管理視圖層次結構的正確方法。您應該使用視圖控制器方法(addChildViewController: & removeFromParentViewController)。然後你可以使用方法transitionFromViewController:toViewController:options:animations:completion:(或類似的東西)做各種動畫。

+0

蘋果發佈我的應用程序這樣做,所以我認爲我不需要使用它,我只想要一種方式來做到這一點,而不使用視圖控制器。 – Nanoc

+0

這不是關於指導方針。這是關於正確的視圖管理。 – Eimantas

+0

我的應用運行良好,我只想爲轉換設置動畫 – Nanoc

0

您可以給UIView塊動畫一個鏡頭。事情是這樣的:

[UIView animateWithDuration:.25 delay:0 options:UIViewAnimationOptionAllowUserInteraction animations:^ 
    { 
     requiredView.frame = CGRectMake(0, 300.0, 400.0, 180.0); 

    } completion:^(BOOL finished) 
    { 
    }]; 

您可以設置視圖的框架,並觀看座標以外的位置,然後相應地改變幀動畫UIView

1

您可以在不使用導航控制器的情況下使用CATransition進行該類動畫以下是代碼

Info *infoViewController = [[Info alloc]init]; 
CATransition *transition = [CATransition animation]; 
transition.duration = 0.50; 
transition.timingFunction = 
[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]; 
transition.type = kCATransitionMoveIn; 
transition.subtype = kCATransitionFromRight; 
UIView *containerView = self.view.window; 
[containerView.layer addAnimation:transition forKey:nil]; 
[self presentModalViewController:infoViewController animated:NO]; 

像這樣,您可以在不使用導航控制器的情況下從左至右對視圖進行動畫處理。