CABasicAnimation学习Demo 包括了一些常用的动画效果(一)

2015-07-24 05:57:55 · 作者: · 浏览: 25

个人写的一些例子:

//
//  ViewController.m
//  CABasicAnimationDemo
//
//  Created by haotian on 14-6-13.
//  Copyright (c) 2014年 Baseus. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize ViewTest;
- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
    //self.ViewTest.backgroundColor = [UIColor redColor];
    //组合动画调用
    //[self startAnimation2];
    
    //永久闪烁动画
    //[self opacityForever_Animation:0.3];
    
    ////有闪烁次数的动画
    //[self opacityTimes_Animation:10 durTimes:0.3];
    
    //画一条线    路径
    [self drawACurvedLine];
    
    //路径动画
    //[self animateCicleAlongPath];
    
}

-(void)startAnimation
{
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
    animation.fromValue = [NSValue valueWithCGPoint:CGPointMake(50, 50)];
    animation.toValue = [NSValue valueWithCGPoint:CGPointMake(300, 300)];
    animation.duration = 3.0f;
    animation.repeatCount = 1;
    //animation.removedOnCompletion = NO; //完成后是否回到原来状态,如果为NO 就是停留在动画结束时的状态
    //animation.fillMode = kCAFillModeRemoved;//动画完成后返回到原来状态
    //animation.fillMode = kCAFillModeBackwards;
    animation.fillMode = kCAFillModeForwards;//当动画完成时,保留在动画结束的状态
    
    [self.ViewTest.layer addAnimation:animation forKey:nil];
}

-(void)startAnimation1
{
    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.translation.y"];
    animation.fromValue = [NSNumber numberWithFloat:0.0f];
    animation.toValue   = [NSNumber numberWithFloat:10.0f];
    //animation.dur
ation = 0.5f; //animation.fillMode = kCAFillModeForwards; //animation.removedOnCompletion = NO; //animation.repeatCount = 2; //[self.ViewTest.layer addAnimation:animation forKey:nil]; CABasicAnimation *animation1 = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"]; animation.fromValue = [NSNumber numberWithFloat:0.0f]; animation.toValue = [NSNumber numberWithFloat:10.0f]; //animation.duration = 0.5f; //animation.fillMode = kCAFillModeForwards; //animation.removedOnCompletion = NO; //animation.repeatCount = 2; //[self.ViewTest.layer addAnimation:animation1 forKey:nil]; CAAnimationGroup *groupAnimation = [CAAnimationGroup animation]; groupAnimation.duration = 2.0f; groupAnimation.autoreverses = YES; groupAnimation.repeatCount = 5; [groupAnimation setAnimations:[NSArray arrayWithObjects:animation,animation1, nil]]; [self.ViewTest.layer addAnimation:groupAnimation forKey:nil]; } //组合动画 -(void)startAnimation2 { //界限 CABasicAnimation *boundsAnimation = [CABasicAnimation animationWithKeyPath:@"bounds"]; boundsAnimation.fromValue = [NSValue valueWithCGRect: self.ViewTest.bounds]; boundsAnimation.toValue = [NSValue valueWithCGRect:CGRectZero]; //透明度变化 CABasicAnimation *opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"]; opacityAnimation.fromValue = [NSNumber numberWithFloat:1.0]; opacityAnimation.toValue = [NSNumber numberWithFloat:0.5]; //位置移动 CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"]; animation.fromValue = [NSValue valueWithCGPoint: self.ViewTest.layer.position]; CGPoint toPoint = self.ViewTest.layer.position; toPoint.x += 180; animation.toValue = [NS