IOS动画 旋转两圈

//
//  ViewController.m
//  KeyFrameAnimation
//
//  Created by vincent_guo on 13-9-6.
//  Copyright (c) 2013年 vincent_guo. All rights reserved.
//

#import "ViewController.h"
#import <QuartzCore/QuartzCore.h>

@interface ViewController (){
    UIImageView *_imageView;
}

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    _imageView = [[UIImageView alloc] init];
    _imageView.bounds = CGRectMake(0, 0, 80, 80);
    _imageView.center = CGPointMake(160, 50);
    _imageView.image = [UIImage imageNamed:@"clock"];
    [self.view addSubview:_imageView];
    [_imageView release];
}

-(void)click:(id)sender{
    [self turnTwoRound2];
}

#pragma mark 使用CABasicAnimation让View向左转两圈,要向右转两圈,把-M_PI负号去掉就可以了
-(void)turnTwoRound1 {
    CABasicAnimation* rotationAnimation;
    rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
    rotationAnimation.toValue = [NSNumber numberWithFloat: -M_PI * 2.0 ];
    rotationAnimation.duration = 0.5;
    rotationAnimation.repeatCount = 2;//动画执行两次
    [_imageView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}


#pragma mark 使用CAKeyframeAnimation让View向左转两圈,要向右转两圈,把-M_PI负号去掉就可以了
-(void)turnTwoRound2{
    CAKeyframeAnimation *rotateAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
    rotateAnimation.duration = 0.5;
    //先从原始位置向左转180度,再向左转180度是-M_PI*4,不是-M_PI*2哦,自己好好理解下)
    rotateAnimation.values = [NSArray arrayWithObjects:
                              [NSNumber numberWithFloat:0.0f],
                              [NSNumber numberWithFloat:-M_PI * 2],
                              [NSNumber numberWithFloat:-M_PI * 4], nil];
    [_imageView.layer addAnimation:rotateAnimation forKey:@"rotationAnimation"];
}

@end

  

posted @ 2013-09-06 14:39  Vincent_Guo  阅读(642)  评论(0编辑  收藏  举报