IOS开发基础之核心动画 基础动画、关键帧、组动画案例
//
// ViewController.m
// 30-核心动画
//
//
#import "ViewController.h"
@interface ViewController ()
@property(nonatomic,weak)CALayer *layer;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIView *redView =[[UIView alloc] init];
redView.frame =CGRectMake(100, 100, 20, 20);
redView.backgroundColor =[UIColor redColor];
self.layer=redView.layer ;
[self.view addSubview:redView];
}
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
//组动画
CAAnimationGroup *group = [[CAAnimationGroup alloc] init];
//创建动画对象 (做什么动画)
CABasicAnimation *anim = [[CABasicAnimation alloc]init];
anim.keyPath = @"transform.rotation";
anim.byValue =@(2*M_PI*10);
CAKeyframeAnimation *anim1=[[CAKeyframeAnimation alloc] init];
anim1.keyPath = @"position";
UIBezierPath * path=[UIBezierPath bezierPathWithArcCenter:CGPointMake(150, 150) radius:100 startAngle:0 endAngle:2*M_PI clockwise:1];
anim1.path = path.CGPath;
group.animations=@[anim,anim1];
group.duration = 3;
group.repeatCount = INT_MAX; // 重复的次数
//怎么做动画
//添加动画(对谁做动画)
[self.layer addAnimation:group forKey:nil];
}
//关键帧
-(void)test2{
//关键帧
//创建动画对象 (做什么动画)
CAKeyframeAnimation *anim = [[CAKeyframeAnimation alloc] init];
//怎么做动画
anim.keyPath=@"position";
/* NSValue *v1 =[NSValue valueWithCGPoint:CGPointMake(100, 100)];
NSValue *v2 =[NSValue valueWithCGPoint:CGPointMake(150, 100)];
NSValue *v3 =[NSValue valueWithCGPoint:CGPointMake(100, 150)];
NSValue *v4 =[NSValue valueWithCGPoint:CGPointMake(150,150 )];
anim.values =@[v1,v2,v3,v4];
*/
UIBezierPath * path=[UIBezierPath bezierPathWithArcCenter:CGPointMake(150, 150) radius:100 startAngle:0 endAngle:2*M_PI clockwise:1];
anim.path = path.CGPath;
anim.duration = 2;
anim.repeatCount = INT_MAX; // 重复的次数
//添加动画(对谁做动画)
[self.layer addAnimation:anim forKey:nil];
}
//基础动画
-(void)testbaseAnimation{
//创建动画对象 (做什么动画)
CABasicAnimation *animation = [[CABasicAnimation alloc] init];
//怎么做动画
animation.keyPath = @"position.x";
/*animation.fromValue =@(10); 从哪
animation.toValue = @(300); 到哪
*/
//每次加10px
animation.byValue = @(10);
//不回去原来的地方
animation.fillMode = kCAFillModeForwards;
animation.removedOnCompletion=NO;
//添加动画(对谁做动画)
[self.layer addAnimation:animation forKey:nil];
}
@end
// LJView.m
// 30-核心动画
//
//
#import "LJView.h"
@implementation LJView
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
*/
- (void)drawRect:(CGRect)rect {
// Drawing code
UIBezierPath * path=[UIBezierPath bezierPathWithArcCenter:CGPointMake(150, 150) radius:100 startAngle:0 endAngle:2*M_PI clockwise:1];
[path stroke];
}
@end
IOS开发基础之核心动画 基础动画、关键帧、组动画案例的更多相关文章
- iOS开发UI篇—核心动画(基础动画)
转自:http://www.cnblogs.com/wendingding/p/3801157.html 文顶顶 最怕你一生碌碌无为 还安慰自己平凡可贵 iOS开发UI篇—核心动画(基础动画) iOS ...
- iOS开发UI篇—核心动画(UIView封装动画)
iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...
- iOS开发UI篇—核心动画(转场动画和组动画)
转自:http://www.cnblogs.com/wendingding/p/3801454.html iOS开发UI篇—核心动画(转场动画和组动画) 一.转场动画简单介绍 CAAnimation的 ...
- iOS开发UI篇—核心动画(关键帧动画)
转自:http://www.cnblogs.com/wendingding/p/3801330.html iOS开发UI篇—核心动画(关键帧动画) 一.简单介绍 是CApropertyAnimatio ...
- iOS开发UI篇—核心动画简介
转自:http://www.cnblogs.com/wendingding/p/3801036.html iOS开发UI篇—核心动画简介 一.简单介绍 Core Animation,中文翻译为核心动画 ...
- 《iOS开发指南:从零基础到App Store上架(第2版)》
<iOS开发指南:从零基础到App Store上架(第2版)> 基本信息 作者: 关东升 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115348029 上架时间:201 ...
- iOS开发系列--C语言之基础知识
概览 当前移动开发的趋势已经势不可挡,这个系列希望浅谈一下个人对IOS开发的一些见解,这个IOS系列计划从几个角度去说IOS开发: C语言 OC基础 IOS开发(iphone/ipad) Swift ...
- iOS开发网络篇—网络编程基础
iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过 ...
- iOS开发 - Core Animation 核心动画
Core Animation Core Animation.中文翻译为核心动画,它是一组很强大的动画处理API,使用它能做出很炫丽的动画效果.并且往往是事半功倍. 也就是说,使用少量的代码就能够实现很 ...
- 2015最全iOS开发自学视频资料(基础+实战)
最全的iOS自学视频,包括c,objective-c,UI等等,没有你找不到的,只有你学不会的,只要你想学,这里都有你所需要的. 推荐教程点这里:http://www.mobiletrain.org/ ...
随机推荐
- ES6新增运算符 ?? || &&
运算符(?? || &&) && 与运算符 &&左边表达式为真时执行右边表达式 let a = true let b = 0 a && ...
- laravel 软删除的使用
1.模型层 引用类use Illuminate\Database\Eloquent\SoftDeletes;class类中引用软删除use SoftDeletes;然后执行正常的删除,列表已经不显示, ...
- Centos系统修改时间临时和永久生效
Centos系统,必须同时修改系统时间和硬件时间,才可以保证修改有效,单纯的使用date命令修改系统时间,是立即生效,重启后系统还原.具体操作如下: 1.date命令 {查看和修改目前系统本地的时间} ...
- asp.net mvc api swagger 配置
1.安装插件 Swashbuckle(版本5.6.0) 和 Swagger.Net.UI(版本1.1.0) 2.SwaggerNet类中注释掉一下代码: using System; using Sys ...
- kiaba启动报 FATAL ResponseError: access_control_exception,ES报:java.lang.SecurityException: access denied ("java.io.FilePermission"“文件地址”)
查了许多博客,找的头都大了还是没有发现问题的根源,之前以为是插件包文件名改了之后还是一样,当我差点放弃的时候 一位博主的瞬间把我点醒https://www.cnblogs.com/personblog ...
- 【JVM】学习JVM垃圾回收理论
参考链接:https://www.cnblogs.com/aspirant/p/8662690.html 一,垃圾回收算法 JVM内存结构:程序计数器.虚拟机栈.本地方法栈.堆区.方法区 1,引用计数 ...
- 第三章 mysql 数据库接口程序以及SQL语句操作
mysql 数据库接口程序以及SQL语句操作 用于管理数据库: 命令接口自带命令 DDL:数据定义语言(create drop ) DCL: 数据控制语言(grant revoke) DML: 数据 ...
- java面经学习002
2. Java都有哪些map,分别怎么实现的,具体讲 3. 除了LinkedHashMap,你还知道哪些有序map 4. ConcurrentHashMap讲一讲 5. 为什么要有线程池 6. 线程池 ...
- 替代学习物联网-云服务-03腾讯云MQTT
1.登录(利用微信) https://console.cloud.tencent.com/iothub 2.新建产品 3.添加设备 4.设备详细参数 域名IP固定: iotcloud-mqtt.gz. ...
- 在自定义Flink1.10 Sql Sink遇到的问题
1.org.apache.flink.table.api.TableException: Table sink does not implement a table schema. 问题:在Redis ...