CABasicAnimation(2)


CABasicAnimation簡介

CABasicAnimationCAPropertyAnimation的子類,使用它可以實現一些基本的動畫效果,它可以讓CALayer的某個屬性從某個值漸變到另一個值。下面就用CABasicAnimation實現幾個簡單的動畫。

先初始化一個view

   UIView * greenView = [[UIView alloc] init];
    greenView.backgroundColor = [UIColor greenColor];
    greenView.frame = CGRectMake(100, 100, 100, 100);
    self.greenView = greenView;
    [self.view addSubview:greenView];
1>平移動畫
<span style="color:#333333;">- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
   
    // 實例化CABasicAnimation對象
    CABasicAnimation * anim = [CABasicAnimation animation];
    
    // 設置屬性
    anim.keyPath = @"position";
    anim.duration = 1.0;
    anim.repeatCount = 1;
    anim.fromValue = [NSValue valueWithCGPoint:CGPointMake(60, 80)];
    anim.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 200)];
    
    </span><span style="color:#ff0000;">anim.fillMode = kCAFillModeForwards;
    anim.removedOnCompletion = NO;</span><span style="color:#333333;">
    
    // 將動畫添加到layer上
    [self.greenView.layer addAnimation:anim forKey:@"123"];
}
</span>

點擊屏幕從(60,80)移動到(200,200),如果沒有fillMode和remoovedOnCompletion屬性設置的話,在動畫結束後會回到原來的位置(100,100)。



2>縮放動畫

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
   
    // 實例化CABasicAnimation對象
    CABasicAnimation * anim = [CABasicAnimation animation];
    
    // 設置屬性
    anim.keyPath = @"bounds";
    anim.duration = 1.0;
    anim.repeatCount = 1;
    anim.toValue = [NSValue valueWithCGRect:CGRectMake(100, 100, 30, 30)];
    
//    anim.fillMode = kCAFillModeForwards;
//    anim.removedOnCompletion = NO;
    
    // 將動畫添加到layer上
    [self.greenView.layer addAnimation:anim forKey:@"123"];
}


如果將fillMode和removeOnCompletion註釋掉的話在縮小到(30,30)的時候還會回到原來的(100,100)

3>旋轉動畫
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
   
    // 實例化CABasicAnimation對象
    CABasicAnimation * anim = [CABasicAnimation animation];
    
    // 設置屬性
    anim.keyPath = @"transform";
    anim.duration = 1.0;
    anim.repeatCount = 1;
    anim.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_4, 0, 0, 1)];
    
    anim.fillMode = kCAFillModeForwards;
    anim.removedOnCompletion = NO;
    
    // 將動畫添加到layer上
    [self.greenView.layer addAnimation:anim forKey:@"123"];
}
繞z軸順時針旋轉45度



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章