UIView層動畫在view轉換上的應用

每一個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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章