#import "ViewController.h"

@interface ViewController ()

{

UIImageView *imgView;

BOOL flag;

UIImageView *imgView1;

UIImageView *imgView2;

UIImageView *imgView3;

UIButton *btn1;

UIButton *btn2;

UIButton *btn3;

}

@end

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

self.view.backgroundColor = [UIColor whiteColor];

flag = YES;

btn1 = [UIButton buttonWithType:UIButtonTypeCustom];

btn1.frame = CGRectMake(250, 200, 60, 60);

//    btn1.hidden = YES;

[self.view addSubview:btn1];

imgView1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 60, 60)];

imgView1.layer.cornerRadius = 30;

imgView1.layer.masksToBounds = YES;

imgView1.image = [UIImage imageNamed:@"1.png"];

[btn1 addSubview:imgView1];

btn2 = [UIButton buttonWithType:UIButtonTypeCustom];

btn2.frame = CGRectMake(250, 200, 60, 60);

//    btn2.hidden = YES;

[self.view addSubview:btn2];

imgView2 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 60, 60)];

imgView2.layer.cornerRadius = 30;

imgView2.layer.masksToBounds = YES;

imgView2.image = [UIImage imageNamed:@"2.png"];

[btn2 addSubview:imgView2];

btn3 = [UIButton buttonWithType:UIButtonTypeCustom];

btn3.frame = CGRectMake(250, 200, 60, 60);

//    btn3.hidden = YES;

[self.view addSubview:btn3];

imgView3 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 60, 60)];

imgView3.layer.cornerRadius = 30;

imgView3.layer.masksToBounds = YES;

imgView3.image = [UIImage imageNamed:@"3.png"];

[btn3 addSubview:imgView3];

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

button.frame = CGRectMake(250, 200, 60, 60);

[button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:button];

imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 60, 60)];

imgView.layer.cornerRadius = 30;

imgView.layer.masksToBounds = YES;

imgView.image = [UIImage imageNamed:@"01.png"];

[button addSubview:imgView];

}

-(void)click:(id)sender

{

if (flag)

{

[UIView animateWithDuration:0.5 animations:^{

imgView.transform = CGAffineTransformMakeRotation(3.14);

//             [btn1.layer addAnimation:[self moveX:2.0f X:[NSNumber numberWithFloat:-150.0f]] forKey:nil];

//            [btn3.layer addAnimation:[self moveX:1.0f X:[NSNumber numberWithFloat:200.0f]] forKey:nil];

[btn1.layer addAnimation:[self moveX:1.0 X:[NSNumber numberWithFloat:-150.0f] Direction:0] forKey:nil];

[btn2.layer addAnimation:[self moveX:1.0 X:[NSNumber numberWithFloat:-150.0f] Direction:1] forKey:nil];

//            [btn3.layer addAnimation:[self moveX:2.0 X:[NSNumber numberWithFloat:0] Direction:2] forKey:nil];

CGPoint point = CGPointMake(-100, -100);

[btn3.layer addAnimation:[self movepoint:point time:1.0] forKey:nil];

//            [btn1.layer addAnimation:[self rotation:2.0 degree:0.78 direction:360 repeatCount:1] forKey:nil];

[UIView animateWithDuration:0.5 animations:^{

btn1.transform = CGAffineTransformMakeRotation(M_PI);

btn2.transform = CGAffineTransformMakeRotation(M_PI);

btn3.transform = CGAffineTransformMakeRotation(M_PI);

}];

}];

flag=NO;

}

else

{

[UIView animateWithDuration:0.5 animations:^{

imgView.transform = CGAffineTransformIdentity;

//            [btn1.layer addAnimation:[self moveX:2.0f X:[NSNumber numberWithFloat:0.0f]] forKey:nil];

[btn1.layer addAnimation:[self moveX:1.0f X:[NSNumber numberWithFloat:0.0f] Direction:0] forKey:nil];

[btn2.layer addAnimation:[self moveX:1.0f X:[NSNumber numberWithFloat:0.0f] Direction:1] forKey:nil];

CGPoint point = CGPointMake(0, 0);

[btn3.layer addAnimation:[self movepoint:point time:1.0] forKey:nil];

[UIView animateWithDuration:0.5 animations:^{

btn1.transform = CGAffineTransformMakeRotation(0);

btn2.transform = CGAffineTransformMakeRotation(0);

btn3.transform = CGAffineTransformMakeRotation(0);

}];

}];

flag=YES;

}

}

#pragma mark =====横向、纵向移动===========

//横向或者纵向移动

-(CABasicAnimation *)moveX:(float)time X:(NSNumber *)x Direction:(NSUInteger)tag

{

//    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.translation.x"];///.y的话就向下移动。

CABasicAnimation *animation = [[CABasicAnimation alloc] init];///.y的话就向下移动。

if (tag == 0)//横向,改变X

{

animation.keyPath = @"transform.translation.x";

animation.toValue = x;

}

else if (tag == 1)//纵向,改变Y

{

animation.keyPath = @"transform.translation.y";

animation.toValue = x;

}

animation.duration = time;

animation.removedOnCompletion = NO;//yes的话,又返回原位置了。

//    animation.repeatCount = MAXFLOAT;

animation.repeatCount = 1;

animation.fillMode = kCAFillModeForwards;

return animation;

}

//移动到某个点

-(CABasicAnimation *)movepoint:(CGPoint )point time:(float)time//点移动

{

CABasicAnimation *animation=[CABasicAnimation animationWithKeyPath:@"transform.translation"];

animation.toValue=[NSValue valueWithCGPoint:point];

animation.removedOnCompletion=NO;

animation.duration = time;

animation.fillMode=kCAFillModeForwards;

return animation;

}

//旋转

-(CABasicAnimation *)rotation:(float)dur degree:(float)degree direction:(int)direction repeatCount:(int)repeatCount

{

CATransform3D rotationTransform  = CATransform3DMakeRotation(degree, 0, 0,direction);

CABasicAnimation* animation;

animation = [CABasicAnimation animationWithKeyPath:@"transform"];

animation.toValue= [NSValue valueWithCATransform3D:rotationTransform];

animation.duration= dur;

animation.autoreverses= NO;

//    animation.cumulative= YES;

animation.removedOnCompletion=NO;

animation.fillMode=kCAFillModeForwards;

animation.repeatCount= repeatCount;

animation.delegate= self;

return animation;

}

iOS 动画 旋转 移动简单代码的更多相关文章

  1. iOS 动画效果。简单的提示消失

    UILabel * label1 = [[UILabel alloc]initWithFrame:CGRectMake(, , , )]; label1.text = @"qingjoin& ...

  2. UI设计篇·入门篇·简单动画的实现,透明动画/旋转动画/移动动画/缩放动画,混合动画效果的实现,为动画设置监听事件,自定义动画的方法

    基本的动画构成共有四种:透明动画/旋转动画/移动动画/缩放动画. 配置动画的方式有两种,一种是直接使用代码来配置动画效果,另一种是使用xml文档配置动画效果 相比而言,用xml文档写出来的动画效果,写 ...

  3. (转)iOS动画Core Animation

    文章转载:http://blog.sina.com.cn/s/blog_7b9d64af0101b8nh.html 在iOS中动画实现技术主要是:Core Animation. Core Animat ...

  4. IOS 动画专题 --iOS核心动画

    iOS开发系列--让你的应用“动”起来 --iOS核心动画 概览 通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看 ...

  5. IOS动画(Core Animation)总结 (参考多方文章)

    一.简介 iOS 动画主要是指Core Animation框架.官方使用文档地址为:Core Animation Guide. Core Animation是IOS和OS X平台上负责图形渲染与动画的 ...

  6. iOS动画学习

    学习一下动画,感谢以下大神的文章:    UIView:基础动画.关键帧动画.转场动画 Core Animation :基础动画,关键帧动画,动画组,转场动画,逐帧动画 CALayer :CALaye ...

  7. iOS 动画笔记 (一)

    你也肯定喜欢炫酷的动画! 在APP中,动画就是一个点睛之笔!可以给用户增加一些独特的体验感,估计也有许多的和我一样的,看着那些觉得不错的动画,也就只能流口水的孩子,毕竟可能不知道从哪里下手去写!动画学 ...

  8. iOS 动画Animation - 5:UIBezier

    首先说明:这是一系列文章,參考本专题下其它的文章有助于你对本文的理解. 在之前的bolg中大家会发现总是会出现UIBezier,可是我也没有做过多介绍,今天就集中介绍一下UIBezier.首先.UIB ...

  9. iOS动画浅汇

    转自:http://www.cocoachina.com/ios/20160311/15660.html 在iOS开发中,制作动画效果是最让开发者享受的环节之一.一个设计严谨.精细的动画效果能给用户耳 ...

随机推荐

  1. Prime Query (ZOJ 3911 线段树)

    Prime Query Time Limit: 1 Second Memory Limit: 196608 KB You are given a simple task. Given a sequen ...

  2. Sublime Text怎么在切分两行视口内显示同一个文件

    原文链接:http://devlog.en.alt-area.org/?p=1098 How to split one file into two views in Sublime Text2 You ...

  3. ace_admin_1.3.1 wysiwyg 工具条下拉出不来

    试了很久才知道是因为<script src="__PUBLIC__/assets/js/bootstrap.min.js"></script>  这个js加 ...

  4. 移植linux-2.6.32.2到qq2440

    编译该版本内核使用的编译器版本:arm-linux-gcc 3.4.1 1.获取linux-2.6.32.2 2.解压内核 3.切换到刚解压的内核目录下: cd linux-2.6.32.2 4.修改 ...

  5. ios下移除原生样式

    之前遇到过这个问题,今天无意中在网上看见博文 记录一下. 设置这个就好: -webkit-appearance : none ;

  6. storm-kafka组件中KafkaOffsetMetric相关统计指标说明

    storm-kafka组件中KafkaOffsetMetric相关统计指标说明 storm-kafka是storm提供的一个读取kakfa的组件,用于从kafka队列中消费数据.KafkaOffset ...

  7. 《BI项目笔记》历年感官评吸质量均值变化分析Cube的建立

    分析主题主要维度:烟叶级别.烟叶级别按等级信息.烟叶级别按分级标准(标准维度)产地(父子维度)检测时间(时间维度,以Tqc_Raw_SmokingTest .CheckTime字段派生CheckDat ...

  8. 25、java中观察者模式Observable和Observer

    如果想要实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口 观察者设计模式 现在很多的购房者都在关注着房子的价格变化,每当房子价格变化的时候,所有的购房 ...

  9. iOS修改手机定位(非越狱任意位置)

    利用开发者的一些调试功能,我们可以修改非越狱的苹果手机定位,模拟任意位置. 经测试,此方法仅限开发者调试使用,并不能长时间修改手机定位. 1. 首先需要了解一些坐标系的知识 iOS,原生坐标系为 WG ...

  10. 你真的会写单例模式吗-------Java实现

    转载: 你真的会写单例模式吗--Java实现 单例模式可能是代码最少的模式了,但是少不一定意味着简单,想要用好.用对单例模式,还真得费一番脑筋.本文对Java中常见的单例模式写法做了一个总结,如有错漏 ...