標籤:
使用UIView動畫函數實現轉場動畫——雙視圖+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion; 參數說明:–duration:動畫的期間–options:轉場動畫的類型–animations:將改變視圖屬性的代碼放在這個block中–completion:動畫結束後,會自動調用這個block
方法調用完畢後,相當於執行了下面兩句代碼:
// 添加toView到父視圖
[fromView.superview addSubview:toView];
// 把fromView從父視圖中移除
[fromView removeFromSuperview];
具體執行個體如下:
實現功能:建立兩個子視圖view1和view2,分別設定不同的背景顏色,並把它們添加到父視圖中,然後建立觸摸點選手勢,
每次觸控螢幕幕時,兩個視圖交替切換顯示,即實現轉場動畫。
代碼如下:
//聲明屬性
#import "ViewController.h"@interface ViewController ()@property (strong,nonatomic)UIView *view1; @property (strong,nonatomic)UIView *view2;@end
//初始化,建立兩個子視圖,同時建立觸摸點選手勢並添加手勢事件
- (void)viewDidLoad { [super viewDidLoad]; //初始化 self.view1 = [[UIView alloc]initWithFrame:self.view.frame]; self.view1.backgroundColor = [UIColor redColor]; //view1背景色為紅色 [self.view addSubview:self.view1]; self.view2 = [[UIView alloc]initWithFrame:self.view.frame]; self.view2.backgroundColor = [UIColor greenColor];//view2背景色為綠色 [self.view addSubview:self.view2]; //添加tap手勢 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tap:)]; tap.numberOfTapsRequired = 1; tap.numberOfTouchesRequired = 1; [self.view addGestureRecognizer:tap];}
//處理觸摸點選手勢事件,在block函數中實現雙視圖轉場動畫
#pragma mark -tap手勢事件-(void)tap:(UITapGestureRecognizer *)sender{ //通過判斷視圖的父視圖是否為空白,可以知道當前視圖是不是正在顯示 if (self.view2.superview == nil) { //通過block函數切換子視圖(設定動畫過渡類型為翻書效果) [UIView transitionFromView:self.view1 toView:self.view2 duration:1.0f options:UIViewAnimationOptionTransitionCurlUp completion:nil];; } else { //通過block函數切換子視圖(設定動畫過渡類型為翻書效果) [UIView transitionFromView:self.view2 toView:self.view1 duration:1.0f options:UIViewAnimationOptionTransitionCurlUp completion:nil]; }}
示範結果如下:
開始時:
點擊後:
動畫結束後:
還可以接著點擊,會變為綠色視圖,就不一一示範了。
iOS:UIView的block函數實現轉場動畫---雙視圖