首页 > 其他 > 详细

使用animation效果切换两个UIView

时间:2015-01-05 14:34:44      阅读:257      评论:0      收藏:0      [点我收藏+]

 

 
- (IBAction) switchViews:(id) sender {
//开启动画
[UIView beginAnimations:@"View Flip" context:nil];
//设置动画时间 
[UIView setAnimationDuration:1];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
//判断当前显示的UIView是不是yellowViewController.
//如果显示的不是yellowViewController,它的view‘s superview就是nil.
if([[self.yellowViewController viewsuperview] == nil){
//判断yellowViewController有没有创建。
if(self.yellowViewController == nil){
//创建yellowViewController,initWithNibName根据nib文件名称创instance。
YellowViewController *_yellowViewController = [[YellowViewController alloc]
  initWithNibName:@"YellowView" bundle:nil];
self.yellowViewController = _yellowViewController;
[_yellowViewController release];
}
//设置动画转换效果为flipFromRight.
[UIView setAnimationTransition:
UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
[self.blueViewController viewWillAppear:YES];
[self.yellowViewController viewWillDisappear:YES];
[self.blueViewController.view removeFromSuperview];
[self.view insertSubview:self.yellowViewController.view atIndex:0];
[self.blueViewController viewWillDisappear:YES];
[self.yellowViewController viewWillAppear:YES];
}else{
if(self.blueViewController == nil){
BlueViewController *_blueViewController = [[BlueViewController alloc]
  initWithNibName:@"BlueView" bundle:nil];
self.blueViewController = _blueViewController;
[_blueViewController release];
}
[UIView setAnimationTransition:
UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
[self.blueViewController viewWillDisappear:YES];
[self.yellowViewController viewWillAppear:YES];
[self.yellowViewController.view removeFromSuperview];
[self.view insertSubview:self.blueViewController.view atIndex:0];
[self.blueViewController viewWillAppear:YES];
[self.yellowViewController viewWillDisappear:YES];
}
[UIView commitAnimations];
}

 

iPhone application中,view的层级关系

|---- window

       |---- subView (RootViewController ‘s View)

             |----OtherViewController ‘s View

在window出现后,调用delegate的applicationDidFinishLaunching 方法,通过方法[window addSubView:rootViewController.view];来显示RootViewController的UIView给用户。所以,这 个 UIView就是一个顶层的显示界面。然后通过rootViewController.view的insertSubView将 yellowViewController.view显示在window中。

使用animation效果切换两个UIView

原文:http://www.cnblogs.com/allanliu/p/4203318.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!