iOS 动画 旋转 移动简单代码
#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 动画 旋转 移动简单代码的更多相关文章
- iOS 动画效果。简单的提示消失
UILabel * label1 = [[UILabel alloc]initWithFrame:CGRectMake(, , , )]; label1.text = @"qingjoin& ...
- UI设计篇·入门篇·简单动画的实现,透明动画/旋转动画/移动动画/缩放动画,混合动画效果的实现,为动画设置监听事件,自定义动画的方法
基本的动画构成共有四种:透明动画/旋转动画/移动动画/缩放动画. 配置动画的方式有两种,一种是直接使用代码来配置动画效果,另一种是使用xml文档配置动画效果 相比而言,用xml文档写出来的动画效果,写 ...
- (转)iOS动画Core Animation
文章转载:http://blog.sina.com.cn/s/blog_7b9d64af0101b8nh.html 在iOS中动画实现技术主要是:Core Animation. Core Animat ...
- IOS 动画专题 --iOS核心动画
iOS开发系列--让你的应用“动”起来 --iOS核心动画 概览 通过核心动画创建基础动画.关键帧动画.动画组.转场动画,如何通过UIView的装饰方法对这些动画操作进行简化等.在今天的文章里您可以看 ...
- IOS动画(Core Animation)总结 (参考多方文章)
一.简介 iOS 动画主要是指Core Animation框架.官方使用文档地址为:Core Animation Guide. Core Animation是IOS和OS X平台上负责图形渲染与动画的 ...
- iOS动画学习
学习一下动画,感谢以下大神的文章: UIView:基础动画.关键帧动画.转场动画 Core Animation :基础动画,关键帧动画,动画组,转场动画,逐帧动画 CALayer :CALaye ...
- iOS 动画笔记 (一)
你也肯定喜欢炫酷的动画! 在APP中,动画就是一个点睛之笔!可以给用户增加一些独特的体验感,估计也有许多的和我一样的,看着那些觉得不错的动画,也就只能流口水的孩子,毕竟可能不知道从哪里下手去写!动画学 ...
- iOS 动画Animation - 5:UIBezier
首先说明:这是一系列文章,參考本专题下其它的文章有助于你对本文的理解. 在之前的bolg中大家会发现总是会出现UIBezier,可是我也没有做过多介绍,今天就集中介绍一下UIBezier.首先.UIB ...
- iOS动画浅汇
转自:http://www.cocoachina.com/ios/20160311/15660.html 在iOS开发中,制作动画效果是最让开发者享受的环节之一.一个设计严谨.精细的动画效果能给用户耳 ...
随机推荐
- python异常和错误(syntax errors 和 exceptions)
语法错误 语法错误又被称解析错误 >>> for i in range(1..10):print(i) File "<stdin>", line 1 ...
- python 学习笔记十 rabbitmq(进阶篇)
RabbitMQ MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消 ...
- BI Content、Metadata Repository
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- PHP操作MySQL的常用函数
某些情况下(如html中),调用php的变量时,要给变量加{},若要使字符串变量加上引号,则还需要在{}外加引号 如: $sql="select * from admin where use ...
- Flex debug版本浏览器选定问题
原来都用IE进行调试的,今天安装了火狐浏览器,结果出现调试器找不到的错误,如下图 需要做下面设置 "窗口"—>"首选参数",下图位置勾选项改为IE,问题就 ...
- for_each使用方法详解[转]
for_each使用方法详解[转] Abstract之前在(原創) 如何使用for_each() algorithm? (C/C++) (STL)曾經討論過for_each(),不過當時功力尚淺,只談 ...
- Php数据类型之整型详解
php中支持的数据类型 在php中主要支持8种数据类型.和3中伪类型的一个形式.8种数据类型分为以下三3大类,第一个就是我们的标量类型,标量类型它只能存储单一数据,那第二大类就是我们的复合类型,第三个 ...
- 转帖-[教程] Win7精简教程(简易中度)2016年8月-0day
[教程] Win7精简教程(简易中度)2016年8月 0day 发表于 2016-8-19 16:08:41 https://www.itsk.com/thread-370260-1-1.html ...
- unity htc vive使用
本文介绍如何在Unity中使用HTC vive设备,当前VR作为市场比较火热的热点,HTC VIVE设备作为三大供应商之一,许多人购买了该设备,却不知道如何使用,本文通过图文并茂的形式,进行手把手的讲 ...
- 0502团队项目 SCRUM团队成立
Scrum团队成立 团队名称:对不对?队 团队目标:短期目标,完成O2O模式的第一个平台 团队口号:我们都不是神的孩子 团队照: 角色分配 产品负责人: 许佳仪.决定开发内容和优先级排序,最大化产品以 ...