界面切换动画应用很常见,其中翻转动画可以带来很优良的用户体验.可以采取两种方法实现翻转动画.
第一种方法:主要利用
+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(4_0);
首先创建一个viewController添加需要展现和翻转显示的View,并在该控制器的view上添加拖拽手势.
[self.view addSubview:self.yellowView];
UISwipeGestureRecognizer *panGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self
action:@selector(swipeButtonAction:)];
[self.view addGestureRecognizer:panGestureRecognizer];
然后在手势方法中添加翻转动画
self.goToFrontView = !self.goToFrontView;
UIView *fromView = self.goToFrontView ? self.yellowView : self.redView;
UIView *toView = self.goToFrontView ? self.redView : self.yellowView;
UIViewAnimationOptions transitionDirection = UIViewAnimationOptionTransitionFlipFromRight;
[UIView transitionFromView:fromView
toView:toView
duration:1.0
options:transitionDirection
completion:^(BOOL finished) {
//you can write your code here,dlx edit
}];
fromView
toView:toView
duration:1.0
options:transitionDirection
completion:^(BOOL finished) {
//you can write your code here,dlx edit
}];
第二种方法和第一种方法类似,其主要利用
- (void)transitionFromViewController:(UIViewController *)fromViewController toViewController:(UIViewController *)toViewController duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options animations:(void (^ __nullable)(void))animations completion:(void (^ __nullable)(BOOL finished))completion NS_AVAILABLE_IOS(5_0);
就是ViewController的动画.
于是,类似的就是先在创建的ViewController里添加子视图控制器,即要展示的控制器.
redView = [redViewController new];
yellowView = [yellowViewController new];
[self addChildViewController:redView];
[self addChildViewController:yellowView];
[redView didMoveToParentViewController:self];
[yellowView didMoveToParentViewController:self];
[self.view addSubview:self.yellowView];
然后在ViewController里添加拖动手势
UISwipeGestureRecognizer *panGestureRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self
action:@selector(swipeButtonAction:)];
[self.view addGestureRecognizer:panGestureRecognizer];
当然最重要的步骤便是在拖动方法里实现翻转动画方法
self.goToFrontView = !self.goToFrontView;
oldViewController =self.goToFrontView ?yellowView:redView;
newViewController =self.goToFrontView ?redView:yellowView;
[self addChildViewController:oldViewController];
[oldViewController didMoveToParentViewController:self];
[self addChildViewController:newViewController];
[self transitionFromViewController:oldViewController toViewController:newViewController
duration:1.0 options:UIViewAnimationOptionTransitionFlipFromRight animations:nil completion:^(BOOL finished) {
//you can write your code here ,dlx edit
}];
oldViewController toViewController:newViewController
duration:1.0 options:UIViewAnimationOptionTransitionFlipFromRight animations:nil completion:^(BOOL finished) {
//you can write your code here ,dlx edit
}];
至此,就实现了上述功能