Objective-C仿映客跑车动画

来源:互联网 发布:java rest接口服务端 编辑:程序博客网 时间:2024/04/27 14:50

做了一个仿映客跑车动画,效果就是边跑边放大,过程中车轮子也在转。先来看一下效果:
这里写图片描述
大体的思路就是把汽车和轮子图片放大一个view中,给这个view加上改变位置和大小的动画,同时,车轮子自己执行transform旋转的动画。为了方便这里的动画加在了view层,加在layer层效率会搞一些,大家主要看一下思路,代码不多,几十行就ok,属性的声明我就不贴了:

- (void)viewDidLoad {    [super viewDidLoad];    _width_car = 150.0;    _heigh_car = _width_car / 1.97;    _animtionView = [[UIView alloc]init];    _animtionView.frame = CGRectMake(-_width_car, 50, _width_car, _heigh_car);    [self.view addSubview:_animtionView];    _wheel_x = _width_car * 0.03;    _wheel_y = _heigh_car * 0.2;    _imgView_wheel = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"wheel"]];    _imgView_wheel.frame = CGRectMake(_wheel_x, _wheel_y, 14, 24);    [_animtionView addSubview:_imgView_wheel];    //车轮每0.1秒执行一次旋转动画    self.timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(playingAction:) userInfo:nil repeats:YES];    _imgView_car = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"car"]];    _imgView_car.frame = CGRectMake(0, 0, _width_car, _heigh_car);    [_animtionView addSubview:_imgView_car];}- (IBAction)starAnimtion:(id)sender {    [UIView animateWithDuration:5 animations:^{        _animtionView.frame = CGRectMake(375, 400, _width_car*2, _heigh_car*2);        _imgView_wheel.frame = CGRectMake(_wheel_x*2, _wheel_y*2, 14*2, 24*2);        _imgView_car.frame = CGRectMake(0, 0, _width_car*2, _heigh_car*2);    } completion:^(BOOL finished) {        _animtionView.frame = CGRectMake(-_width_car, 50, _width_car, _heigh_car);        _imgView_wheel.frame = CGRectMake(_wheel_x, _wheel_y, 14, 24);        _imgView_car.frame = CGRectMake(0, 0, _width_car, _heigh_car);    }];}-(void)playingAction:(id)sender{    _imgView_wheel.transform = CGAffineTransformRotate(_imgView_wheel.transform, M_PI);}

别忘了销毁timer以防内存泄漏:

- (void)dealloc{    [_timer invalidate];    _timer = nil;}

最后给大家介绍一个做OC动画非常给力的软件QuartzCode,用类似flash的方法制作动画,并且可以生成Objective-C的layer层动画代码,非常方便,做复杂的动画非常高效,感兴趣的可以了解一下。

0 0
原创粉丝点击