动画代码

-(void)setAnimation:(NSIndexPath *) indexPath{
    switch (indexPath.section) {
        case 0:{
            [self setLayerAnimation:indexPath.row];
        }
            break;
        case 1:
        {
            [self setUIViewAnimation:indexPath.row];
        }
            break;
        case 2:
        {
            [self setCATransition:indexPath.row];
        }
            break;
        case 3:
        {
            [self setCABasicAnimation:indexPath.row];
        }
            break;
        case 4:
        {
            [self setCAKeyframeAnimation:indexPath.row];
        }
            break;
        case 5:
        {
            [self setCAAnimationGroup:indexPath.row];
        }
            break;
        case 6:{
            [self setCATransfrom3D:indexPath.row];
        }
            break;
        default:
            break;
    }
}

-(void)setLayerAnimation:(NSInteger) row{
    switch (row) {
        case 0:
        {
            [CATransaction begin];
            [CATransaction setDisableActions:!enableAnimation.isOn];
            [CATransaction setAnimationDuration:animationDuration.value];
            [_layer setCornerRadius:[_layer cornerRadius]==0?30:0];
            [_layer setBorderWidth:[_layer borderWidth]==0?5:0];
            [_layer setBorderColor:[UIColor redColor].CGColor];
            [CATransaction commit];
        }
            break;
        default:
            break;
    }
    
}

//基础动画
-(void)setUIViewAnimation:(NSInteger) row{
    switch (row) {
        case 0://CurlUp
        {
            [UIView beginAnimations:@"animationID" context:nil];
            [UIView setAnimationDuration:animationDuration.value];
            [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
            [UIView setAnimationRepeatAutoreverses:enableAnimation.isOn];
            [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:image cache:YES];
            [UIView commitAnimations];
        }
            break;
        case 1://FlipFromLeft
        {
            [UIView beginAnimations:@"animationID" context:nil];
            [UIView setAnimationDuration:animationDuration.value];
            [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
            [UIView setAnimationRepeatAutoreverses:enableAnimation.isOn];
            [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:image cache:YES];
            [UIView commitAnimations];
        }
            break;
        case 2://block CurlDown
        {
            [UIView animateWithDuration:animationDuration.value animations:^(void){
                [UIView setAnimationRepeatAutoreverses:enableAnimation.isOn];
                [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:image cache:YES];
            }];
        }
            break;
        case 3://block FlipFromRight
        {
            [UIView animateWithDuration:animationDuration.value delay:.5 options:UIViewAnimationOptionCurveEaseOut animations:^(void){
                [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:image cache:YES];
            } completion:^(BOOL finish){
                animationDurationLabel.text = @"动画结束";
            }];
        }
            break;
        default:
            break;
    }
}

-(void)setCATransition:(NSInteger) row{
    switch (row) {
        case 0://cube
        {
            CATransition *transtion = [CATransition animation];
//            [transtion setStartProgress:0.5];
//            [transtion setEndProgress:0.6];
            transtion.duration = animationDuration.value;
            [transtion setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
            [transtion setType:@"cube"];
            [transtion setSubtype:kCATransitionFromTop];
            [image.layer addAnimation:transtion forKey:@"transtionKey"];
            
        }
            break;
        case 1://kCATransitionPush
        {
            CATransition *transtion = [CATransition animation];
            transtion.duration = animationDuration.value;
            [transtion setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
            [transtion setType:kCATransitionPush];
            [transtion setSubtype:kCATransitionFromTop];
            [image.layer addAnimation:transtion forKey:AnimationKey];
        }
            break;
        case 2:
        {
            CATransition *transtion = [CATransition animation];
            transtion.duration = animationDuration.value;
            [transtion setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
            [transtion setType:kCATransitionReveal];
            [transtion setSubtype:kCATransitionFromTop];
            [image.layer addAnimation:transtion forKey:@"transtionKey"];
        }
            break;
        case 3:
        {
            CATransition *transtion = [CATransition animation];
            transtion.duration = animationDuration.value;
            [transtion setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
            [transtion setType:kCATransitionMoveIn];
            [transtion setSubtype:kCATransitionFromTop];
            [transtion setDelegate:self];
            [image.layer addAnimation:transtion forKey:@"transtionKey"];
        }
            break;
        case 4://kCATransitionFade
        {
            CATransition *transtion = [CATransition animation];
            transtion.duration = animationDuration.value;
            [transtion setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
            [transtion setType:kCATransitionFade];
            [transtion setSubtype:kCATransitionFromTop];
            [image setImage:[UIImage imageNamed:@"img.jpeg"]];
            [image.layer addAnimation:transtion forKey:AnimationKey];
        }
            break;
        case 5:
        {
            CATransition *transtion = [CATransition animation];
            transtion.duration = animationDuration.value;
            [transtion setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
            [transtion setType:@"suckEffect"];
            [transtion setSubtype:kCATransitionFromTop];
            [image.layer addAnimation:transtion forKey:@"transtionKey"];
        }
            break;
        case 6:
        {
            CATransition *transtion = [CATransition animation];
            transtion.duration = animationDuration.value;
            [transtion setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
            [transtion setType:@"oglFlip"];
            [transtion setSubtype:kCATransitionFromTop];
            [image.layer addAnimation:transtion forKey:@"transtionKey"];
        }
            break;
        case 7:
        {
            CATransition *transtion = [CATransition animation];
            [transtion setStartProgress:.2];
            [transtion setEndProgress:.8];
            transtion.duration = animationDuration.value;
            [transtion setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]];
            [transtion setType:@"rippleEffect"];
            [transtion setSubtype:kCATransitionFromTop];
            [image.layer addAnimation:transtion forKey:@"transtionKey"];
        }
            break;
        case 8://cameraIrisHollowOpen
        {
            CATransition *transtion = [CATransition animation];
            transtion.duration = animationDuration.value;
            [transtion setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
            [transtion setType:@"cameraIrisHollowOpen"];
            [transtion setSubtype:kCATransitionFromTop];
            [image.layer addAnimation:transtion forKey:@"transtionKey"];
        }
            break;
        case 9://cameraIrisHollowClose
        {
            CATransition *transtion = [CATransition animation];
            transtion.duration = animationDuration.value;
            [transtion setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn]];
            [transtion setType:@"cameraIrisHollowClose"];
            [transtion setSubtype:kCATransitionFromTop];
            [image.layer addAnimation:transtion forKey:@"transtionKey"];
        }
            break;
        default:
            break;
    }
}

-(void)setCABasicAnimation:(NSInteger) row{
    switch (row) {
        case 0:
        {
            CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
            [basic setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
            [basic setFromValue:[NSNumber numberWithFloat:1]];
            [basic setToValue:[NSNumber numberWithFloat:.3]];
            [basic setDuration:animationDuration.value];
            [basic setDelegate:self];
            [image.layer addAnimation:basic forKey:AnimationKey];
            
        }
            break;
//        case 1:
//        {
//            CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"opacity"];
//            [basic setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
//            [basic setFromValue:[NSNumber numberWithFloat:1]];
//            [basic setToValue:[NSNumber numberWithFloat:.3]];
//            [basic setDuration:animationDuration.value];
//            [image.layer addAnimation:basic forKey:AnimationKey];
//        }
//            break;
        case 1:
        {
//            CABasicAnimation *basic=[CABasicAnimation animationWithKeyPath:@"shadowColor"];
//            basic.fromValue=(id)[UIColor redColor].CGColor;
//            basic.toValue=(id)[UIColor greenColor].CGColor;
//            basic.timingFunction=[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
//            basic.duration=animationDuration.value;
//            [image.layer addAnimation:basic forKey:AnimationKey];
//            self.view.layer.transform=CATransform3DMakeRotation(M_PI, 0,0,1);
            
            CABasicAnimation *animation = [ CABasicAnimation
                                           animationWithKeyPath: @"transform" ];
            animation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
            
            //围绕Z轴旋转,垂直与屏幕
            animation.toValue = [ NSValue valueWithCATransform3D:
                                 
                                 CATransform3DMakeRotation(45.0f * M_PI / 180.0f,1.0, 0,0) ];
            animation.duration = 1;
//            //旋转效果累计,先转180度,接着再旋转180度,从而实现360旋转
//            animation.cumulative = YES;
//            animation.repeatCount = 2;
            
            //在图片边缘添加一个像素的透明区域,去图片锯齿
//            CGRect imageRrect = CGRectMake(0, 0,image.frame.size.width, image.frame.size.height);
//            UIGraphicsBeginImageContext(imageRrect.size);
//            [image.image drawInRect:CGRectMake(1,1,image.frame.size.width-2,image.frame.size.height-2)];
//            image.image = UIGraphicsGetImageFromCurrentImageContext();
//            UIGraphicsEndImageContext();
            animation.fillMode=kCAFillModeForwards;
            animation.removedOnCompletion = NO;
            [image.layer addAnimation:animation forKey:AnimationKey];
        }
        default:
            break;
    }
}

-(void)setCAKeyframeAnimation:(NSInteger) row{
    switch (row) {
        case 0:
        {
            CAKeyframeAnimation *keyframe = [CAKeyframeAnimation animationWithKeyPath:@"borderWidth"];
            keyframe.values = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0],
                               [NSNumber numberWithFloat:5],
                               [NSNumber numberWithFloat:10],
                               [NSNumber numberWithFloat:15],nil];
            keyframe.repeatCount = MAXFLOAT;
            keyframe.autoreverses = enableAnimation.isOn;
            keyframe.duration = animationDuration.value;
            [image.layer addAnimation:keyframe forKey:AnimationKey];
        }
            break;
        case 1://position
        {
            UIBezierPath *path = [UIBezierPath bezierPath];
            //            [path moveToPoint:image.frame.origin];
            [path moveToPoint:CGPointMake(image.frame.origin.x + image.frame.size.width/2, image.frame.origin.y + image.frame.size.height/2)];
            [path addLineToPoint:CGPointMake(image.frame.origin.x + image.frame.size.width/2,400)];
            [path addLineToPoint:CGPointMake(20, 400)];
            CAKeyframeAnimation *keyframe = [CAKeyframeAnimation animationWithKeyPath:@"position"];
            keyframe.path = path.CGPath;
            keyframe.duration = animationDuration.value;
            [image.layer addAnimation:keyframe forKey:AnimationKey];
        }
            break;
        default:
            break;
    }
}

-(void)setCAAnimationGroup:(NSInteger) row{
    
    CAAnimationGroup *group = [CAAnimationGroup animation];
    
    CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
    [basic setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut]];
    [basic setFromValue:[NSNumber numberWithFloat:1]];
    [basic setToValue:[NSNumber numberWithFloat:.3]];
    
    CAKeyframeAnimation *keyframe = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.x"];
    keyframe.values = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0],[NSNumber numberWithFloat:M_PI], nil];
    
    [group setDuration:animationDuration.value];
    [group setAnimations:[NSArray arrayWithObjects:basic,keyframe, nil]];
    [image.layer addAnimation:group forKey:AnimationKey];
}

-(void)setCATransfrom3D:(NSInteger) row{
    switch (row) {
        case 0:
        {
            [UIView animateWithDuration:animationDuration.value animations:^{
                [UIView setAnimationRepeatCount:MAXFLOAT];
                [UIView setAnimationRepeatAutoreverses:enableAnimation.isOn];
                CATransform3D transform = CATransform3DMakeTranslation(0, -150, 0);
                CATransform3D trans = CATransform3DScale(transform, 1.5, 1.5, 10);
                [label.layer setTransform:trans];
            } completion:^(BOOL finished) {
                animationDurationLabel.text = @"finished";
            }];
        }
            break;
        case 1:{
            CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
            [basic setDuration:animationDuration.value];
            [basic setRepeatCount:MAXFLOAT];
            [basic setAutoreverses:enableAnimation.isOn];
            
            NSValue *valueForm = [NSValue valueWithCATransform3D:CATransform3DIdentity];
            CATransform3D transTo = CATransform3DMakeScale(.5, .5, 0);
            NSValue *valueTo = [NSValue valueWithCATransform3D:transTo];
            
            [basic setFromValue:valueForm];
            [basic setToValue:valueTo];
            
            [image.layer addAnimation:basic forKey:AnimationKey];
        }
            break;
        case 2:{
            CAKeyframeAnimation *keyframe = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
            [keyframe setRepeatCount:MAXFLOAT];
            [keyframe setDuration:animationDuration.value];
            [keyframe setAutoreverses:enableAnimation.isOn];
            
            CATransform3D transForm = CATransform3DIdentity;
            CATransform3D transTo = CATransform3DMakeScale(.5, .5, 0);
            NSValue *valueForm = [NSValue valueWithCATransform3D:transForm];
            NSValue *valueTo = [NSValue valueWithCATransform3D:transTo];
            
            [keyframe setValues:[NSArray arrayWithObjects:valueTo,valueForm,nil]];
            
            [image.layer addAnimation:keyframe forKey:AnimationKey];
        }
            break;
        case 3:{
            CABasicAnimation *basic = [CABasicAnimation animationWithKeyPath:@"transform"];
            [basic setRepeatCount:MAXFLOAT];
            [basic setDuration:animationDuration.value];
            [basic setAutoreverses:enableAnimation.isOn];
            
            NSValue *valueForm = [NSValue valueWithCATransform3D:CATransform3DIdentity];
            CGAffineTransform affine = CGAffineTransformMakeTranslation(0, -150);
            CATransform3D t = CATransform3DMakeAffineTransform(affine);
            CATransform3D trans = CATransform3DScale(t, 1.5, 1.5, 10);
            NSValue *valueTo = [NSValue valueWithCATransform3D:trans];
            
            [basic setFromValue:valueForm];
            [basic setToValue:valueTo];
            
            [label.layer addAnimation:basic forKey:AnimationKey];
        }
            break;
        default:
            break;
    }
}

-(void)animationDidStart:(CAAnimation *)anim{
    animationDurationLabel.text = @"开始动画";
}

-(void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag{
    animationDurationLabel.text = @"动画完毕";
}

- (IBAction)animationDurationChanged:(id)sender {
    [image.layer removeAnimationForKey:AnimationKey];
    [label.layer removeAllAnimations];
    animationDuration = (UISlider *)sender;
    [animationDurationLabel setText:[NSString stringWithFormat:@"%1.1f", animationDuration.value]];
}

你可能感兴趣的:(动画代码)