每一個iOS應用都一個UIWindow的實例,這個不過是一個UIView的子類,因此我們可以在UIWindow上的做動畫,而這樣的動畫可以用來做View的轉換。
下面的工程用Xcode4.2建立
1.新建一個Empty Application,設置如下:
2.增加一個ViewController類,配置如下:
打開FVC.xib,加入一個button,命名爲 goto two,爲它的touch up inside事件加入一個響應函數。
3.使用上面同樣的方法,加入一個SVC類,也加入一個button,命名爲back,也爲它的touch up inside事件加入一個響應函數。
4.修改AppDelegate.h文件如下:
@classFVC;
@classSVC;
@interface AppDelegate :UIResponder <UIApplicationDelegate> {
FVC *_fvc;
SVC *_svc;
}
@property (strong,nonatomic) UIWindow *window;
- (void)flipAction:(id)sender;
@end
5.在AppDelegate.m中實現函數flipAction:
#pragma mark -
#pragma mark === Flip action ===
#pragma mark -
- (void)flipAction:(id)sender {
[UIViewbeginAnimations:nilcontext:NULL];
[UIViewsetAnimationDuration:0.5];
[UIViewsetAnimationTransition:([_fvc.viewsuperview] ? UIViewAnimationTransitionFlipFromLeft :UIViewAnimationTransitionFlipFromRight) forView:self.windowcache:YES];
if ([_fvc.viewsuperview]) {
[_fvc.viewremoveFromSuperview];
[self.windowaddSubview:_svc.view];
} else {
[_svc.viewremoveFromSuperview];
[self.windowaddSubview:_fvc.view];
}
[UIViewcommitAnimations];
}
6.在AppDelegate.m中修改函數
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
_svc = [[SVCalloc] initWithNibName:@"SVC"bundle:nil];
_fvc = [[FVCalloc] initWithNibName:@"FVC"bundle:nil];
self.window = [[[UIWindowalloc] initWithFrame:[[UIScreenmainScreen] bounds]]autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColorwhiteColor];
[self.windowaddSubview:_fvc.view];
[self.windowmakeKeyAndVisible];
return YES;
}
7.在AppDelegate.m中修改函數dealloc
- (void)dealloc
{
[_svcrelease];
[_fvcrelease];
[_windowrelease];
[superdealloc];
}
千萬不要忘了忘記內存管理。
8.在FVC.m中實現button的響應事件代碼:
#import"AppDelegate.h"
- (IBAction)gotoTwo:(id)sender {
AppDelegate *appD = (AppDelegate *)[UIApplicationsharedApplication].delegate;
[appD flipAction:nil];
}
9.在SVC.m中做同樣的事情。工程代碼如下:
http://download.csdn.net/detail/NickTang/3692498