实例讲解iOS中的CATransition转场动画使用

2020-01-15 16:28:06王振洲

    iconView.backgroundColor = [UIColor greenColor];
    self.iconView = iconView;

    // 设置为圆角图片
    self.iconView.layer.cornerRadius = self.iconView.frame.size.width * 0.5;
    self.iconView.clipsToBounds = YES;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

    // UIView自带的转场动画
    [UIView transitionWithView:self.iconView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{ /**  执行左翻转动画,*/
        // 从左边翻转 , 之前设置显示图片1,翻转后显示图2 -》图片1 左翻转到最后显示图片2


        self.iconView.image = [UIImage imageNamed:@"2"];

    } completion:^(BOOL finished) {

        NSLog(@"completion");

        /** 左翻转动画 结束后, 停 1 秒后,再执行 右翻转动画 */

        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ // 停 1 秒后,再执行 右翻转动画

            [UIView transitionWithView:self.iconView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{ // 然后,从右边翻转,翻转时显示图片1 -》图片2 右翻转最后显示图片1

                self.iconView.image = [UIImage imageNamed:@"1"];

            } completion:nil];

        });
    }];
}
@end


3、视图间转场动画:使用UIView自带双视图间的转场动画函数实现

 

 

复制代码
#import "ViewController.h"

 

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;

/**< imageView1  */
@property (nonatomic, strong) UIView *view1;

/**< imageView2 */
@property (nonatomic, strong) UIView *view2;

@end

@implementation ViewController

- (void)viewDidLoad{

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor blackColor];

    // 1. scrollView 添加 view2 子控件
    UIView *view2 = [[UIView alloc] init];
    view2.backgroundColor = [UIColor greenColor];