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/ ...
随机推荐
- 在子组件中使用$parent获取不到父组件里的变量值?
一直用的都是this.$parent来取父组件的值,现在发现,element-UI内的组件,也是一层父组件 例如 父组件内 子组件内 console.log 打印结果
- 记一次在MyBatis-Plus中 @TableField 自动填充中遇见的坑
先放一张表生成策略对应的结果 值 描述 DEFAULT 默认不处理 INSERT 插入时填充字段 UPDATE 更新时填充字段 INSERT_UPDATE 插入和更新时填充字段 此处需要注意一下,如果 ...
- 5分钟上手使用vuex,vuex状态管理,vuex遇到的坑
很多刚学习vue的人对于全局变量管理工具vuex都觉得很神秘,今天就用很通俗的大白话协助大家理解一下vuex,作者的vue项目使用vue脚手架搭建的,用脚手架搭建的项目会在src文件夹下有一个stor ...
- Qframework UIKit
用QFramework的UIKit 功能很容易实现UI模块的MVC功能,但MVC模式构造起来还是会有些繁琐, 两个相互直接的UIElement 之间的一些数据传输和调用都要用Msg通过UIPanel ...
- 拉取docker容器后启动容器的脚本
我暂且不论如何拉取docker镜像.我使用sudo docker images查看拉取的镜像. 譬如我拉取nvidia的pytorch镜像后,想要创建一个实例或启动某实例,可使用如下脚本(如果本地没有 ...
- csss线条中间粗两边细
效果 <div class="hr-line-div"></div> .hr-line-div { margin: 0 auto; height: 2px; ...
- 【Windows】查询端口占用并中止进程
netstat -aon|findstr 7000 tasklist|findstr 14828 taskkill /pid 14828 /t /f
- NX二次开发,对象上色
#include <uf_defs.h> #include <uf_ui_types.h> #include <uf.h> #include <uf_ui.h ...
- C语言||一作业04
作业头 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-3 这个作业要求在哪 https://edu.cnblogs.com/campus ...
- leetcode-560-和为 K 的子数组
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的连续子数组的个数 . 示例 1: 输入:nums = [1,1,1], k = 2 输出:2 示例 2: 输入:num ...