UIView下使用Animation控制動畫 – iPhone手機開發技術文章 iPhone軟體開發教學課程

動畫效果是IOS界面重要的特色之一,其中CAAnimation是所有動畫對象的抽象父類,而對於新手,使用較多的是UIView下的動畫方法(類方法)。使用UIView下的動畫,有下面幾個方法。

方法一:設置beginAnimations

其中memberView為需要添加的子視圖的視圖,mivc.view為子視圖,在使用的時候,需要將這兩個地方替換

[cpp] 
[UIView beginAnimations:@"view flip" context:nil]; 
[UIView setAnimationDuration:1]; 
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:memberView cache:YES]; 
[memberView addSubview:mivc.view]; 
[UIView commitAnimations]; 

需要註意的是,一定要使用[UIView commitAnimations];動畫才會生效
通過[UIView setAnimationDuration:1]; 設置持續時間。

在IOS4.0後,我們有瞭新的方法,+ (void)transitionWithView:(UIView *)view duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion,依然是UIView的類方法,但使用到瞭Block對象,Block對象是一組指令,可以傳遞(像變量一樣),可以把它想像成C語言的函數指針。

方法二:

其中在當前視圖下,刪除[blueViewController view],添加[yellowViewController view],在使用時,這兩個地方要替換

[cpp] 
[UIView transitionWithView:self.view 
                     duration:0.2 
                      options:UIViewAnimationOptionTransitionFlipFromLeft 
                   animations:^{ [[blueViewController view] removeFromSuperview]; [[self view] insertSubview:yellowViewController.view atIndex:0]; } 
                   completion:NULL]; 
其中animations:後的block為對特定視圖發生的改變,其不能為是NULL,completion:後block為動畫執行完後,需要執行的代碼塊,可以為NULL。
根據手冊,在整個動畫過程中,用戶交互對於此視圖是暫時無效的(而IOS5.0前,動畫過程中,用戶交互對於整個應用是無效的),如果想要用戶可以和視圖交互,可以改變 UIViewAnimationOptionAllowUserInteraction 的值。

 

 

 

發佈留言