ios开发核心动画七:核心动画与UIView动画的区别

/**
  UIView与核心动画区别?(掌握)
 
   1.核心动画只作用在layer.
   2.核心动画看到的都是假像,它并没有去修改UIView的真实位置.
 
   什么时候使用核心动画?
   1.当不需要与用户进行交互,使用核心动画
   2.当要根据路径做动画时,使用核心动画:CABasicAnimation,CAKeyFrameAnimation,两个都可以根据绘制的路径UIBizerPath来绘制路径来执行动画
   3.当做转场动画时, 使用核心动画 (核心动画转场类型比较多)CATrasition或是UIView的核心动画
 
 
 
 */

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *redView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];


    NSLog(@"%@",NSStringFromCGRect(self.redView.frame));
    

    
    
}



-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    
//    CABasicAnimation *anim = [CABasicAnimation animation];
//    anim.keyPath = @"position.y";
//    anim.toValue = @400;
//    anim.removedOnCompletion = NO;
//    anim.duration = 1;
//    anim.fillMode = kCAFillModeForwards;
//    anim.delegate = self;
//    [self.redView.layer addAnimation:anim forKey:nil];
    
    
    [UIView animateWithDuration:0.5 animations:^{
       
        self.redView.center = CGPointMake(50, 400);
        
        
    }completion:^(BOOL finished) {
         NSLog(@"%@",NSStringFromCGRect(self.redView.frame));
    }];
    
    
}

//动画开始时执行
-(void)animationDidStart:(CAAnimation *)anim {
    //NSLog(@"%s",__func__);
}

//动画完成时执行
-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
    //NSLog(@"%s",__func__);
  //  NSLog(@"finished==%@",NSStringFromCGRect(self.redView.frame));
}

@end

1.UIView和核心动画区别?

  核心动画只能添加到CALayer

  核心动画一切都是假象,并不会改变真实的值。

   

2.什么时候使用UIView的动画?

  如果需要与用户交互就使用UIView的动画.

  不需要与用户交互可以使用核心动画

 

    3.什么场景使用核心动画最多?

      在转场动画中,核心动画的类型比较多

  根据一个路径做动画,只能用核心动画(帧动画)

  动画组:同时做多个动画

原文地址:https://www.cnblogs.com/cqb-learner/p/5840793.html