IOS视图切换(ios4)
效果图如下
1. 这个页面由三个控制器实现,一个ToolBar控制器,两个界面颜色控制器。两个界面颜色控制器放在ToolBar控制器中托管。ToolBar控制器交由项目默认控制器AppDelegate托管。
2. 页面实现
a) 主界面:把蓝色界面首先加载到了主界面当中。主要在ToolBar控制器当中添加实现。代码如下:
3. SwitcherViewController.m文件
4.
5. - (void)viewDidLoad
6. {
7.
8. BlueViewController *bvc = [ [BlueViewController alloc] initWithNibName:@"BlueViewController" bundle:nil];
9.
10. self.blueController = bvc;
11.
12. [self.view insertSubview:blueController.view atIndex:0];
13. [bvc release];
14.
15. [super viewDidLoad];
16. // Do any additional setup after loading the view from its nib.
3.界面切换代码
SwitcherViewController.m文件
-(IBAction)switchViews:(id)sender{
//使用动画
[UIView beginAnimations:@"View Flip" context:nil];
//设置持续时间
[UIView setAnimationDuration:1.25];
//使用平滑
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
if (self.yellowController.view.superview == nil) {
if (self.yellowController.view == nil) {
YellowViewController *yvc = [ [YellowViewController alloc] initWithNibName:@"YellowViewController" bundle:nil];
self.yellowController = yvc;
[YellowViewController release];
}
[self.blueController.view removeFromSuperview];
[self.view insertSubview:yellowController.view atIndex:0];
//设置翻页效果 支持缓存
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:self.view cache:YES];
[blueController viewDidAppear:YES];
[yellowController viewDidDisappear:YES];
[self.blueController.view removeFromSuperview];
[self.view insertSubview:yellowController.view atIndex:0];
[blueController viewDidDisappear:YES];
[yellowController viewDidAppear:YES];
}else{
if (self.blueController.view.superview == nil) {
if (self.blueController.view == nil) {
BlueViewController *bvc = [ [BlueViewController alloc] initWithNibName:@"BlueViewController" bundle:nil];
self.blueController = bvc;
[bvc release];
}
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.view cache:YES];
[yellowController viewDidAppear:YES];
[blueController viewDidDisappear:YES];
[self.yellowController.view removeFromSuperview];
[self.view insertSubview:blueController.view atIndex:0];
[yellowController viewDidDisappear:YES];
[blueController viewDidAppear:YES];
}
}
[UIView commitAnimations];
}