IOS CABasicAnimation实现旋转动画
IOS CABasicAnimation实现旋转动画
定义一个CABasicAnimation
lazy var rotateAnimation: CABasicAnimation = {
let animation = CABasicAnimation(keyPath: "transform.rotation.z")
animation.fromValue = 0
// animation.byValue = startAngle
animation.toValue = Double.pi * 2
animation.duration = 60
animation.autoreverses = false
animation.fillMode = .forwards
animation.repeatCount = MAXFLOAT
animation.isRemovedOnCompletion = false
return animation
}()
指定keyPath为transform.rotation.z
| 属性 | 说明 |
|---|---|
| duration | 动画的时长 |
| repeatCount | 重复的次数。不停重复设置为 MAX_FLOAT |
| repeatDuration | 设置动画的时间。在该时间内动画一直执行,不计次数。 |
| beginTime | 指定动画开始的时间。从开始延迟几秒的话,设置为【CACurrentMediaTime() + 秒数】 的方式 |
| timingFunction | 设置动画的速度变化 |
| autoreverses | 动画结束时是否执行逆动画 |
| fromValue | 所改变属性的起始值 |
| toValue | 所改变属性的结束时的值 |
| byValue | 所改变属性相同起始值的改变量 |
| isRemovedOnCompletion | 是否在完成时移除 |
注意
fromValue toValue byValue 这三个值最多只能设置两个
设置不同属性的效果
- fromValue toValue 从fromValue到toValue
- fromValue byValue 从fromValue到fromValue+byValue
- byValue toValue 从toValue-byValue到toValue
- fromValue 从fromValue到当前对象的当前值
- toValue 从当前值到toValue
- byValue 从当前值到当前值+byValue
isRemovedOnCompletion默认为true,因为此动画layer是添加一个presentation layer,动画开始时原layer隐藏,动画结束时,presentation layer从屏幕上移除,原layer显示,设置为true的话有可能会在动画播放时app退到后台此presentation layer就被移除导致动画停止
fillMode设置为.forward,动画将在结束之后保持最后一帧
添加动画
secView.layer.add(rotateAnimation, forKey: nil)
设置旋转中心
有时候可能不想让view以自己的中心点为原点旋转,比如可能是让它从右下角或者左下角,就需要设置layer的anchorPoint
All geometric manipulations to the view occur about the specified point
对视图的所有几何操作都发生在指定点附近
默认值为(0.5,0.5),也就是视图的中心点
设置(1,1)就是右下角,(0,1)就是左下角
IOS CABasicAnimation实现旋转动画的更多相关文章
- iOS 帧动画之翻转和旋转动画
记录两个比较简单的动画,一个是翻转的动画,一个是旋转的动画. 旋转动画: 1 [UIView animateWithDuration:3 animations:^{ if (formView) { f ...
- AJ学IOS(39)UI之核心动画之CABasicAnimation(基础动画)
AJ分享,必须精品 一.CABasicAnimation简介 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPat ...
- iOS开发--QQ音乐练习,旋转动画的实现,音乐工具类的封装,定时器的使用技巧,SliderBar的事件处理
一.旋转动画的实现 二.音乐工具类的封装 -- 返回所有歌曲,返回当前播放歌曲,设置当前播放歌曲,返回下一首歌曲,返回上一首歌曲方法的实现 头文件 .m文件 #import "ChaosMu ...
- ios开发——实用技术篇&三维旋转动画
实现三位旋转动画的方法有很多种,这里介绍三种 一:UIView 1 [UIView animateWithDuration:1.0 animations:^{ 2 self.iconView.laye ...
- iOS 特定图片的button的旋转动画
近期做的东西中,要为一个有特定图片的button加入旋转动画,Demo代码例如以下: #import "ViewController.h" @interface ViewContr ...
- 【原】iOS学习44之动画
1. 简单动画 1> UIImageView GIF 动画 GIF图的原理是:获取图片,存储在图片数组中,按照图片数组的顺序将图片以一定的速度播放 UIImageView *showGifima ...
- IOS开发系列 --- 核心动画
原始地址:http://www.cnblogs.com/kenshincui/p/3972100.html 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥i ...
- [iOS Animation]-CALayer 显示动画
显式动画 如果想让事情变得顺利,只有靠自己 -- 夏尔·纪尧姆 上一章介绍了隐式动画的概念.隐式动画是在iOS平台创建动态用户界面的一种直接方式,也是UIKit动画机制的基础,不过它并不能涵盖所有的动 ...
- iOS开发之核心动画(Core Animation)
1.概述 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对应的框架< ...
- iOS - Core Animation 核心动画
1.UIView 动画 具体讲解见 iOS - UIView 动画 2.UIImageView 动画 具体讲解见 iOS - UIImageView 动画 3.CADisplayLink 定时器 具体 ...
随机推荐
- [TK] Blocks 单调栈
题目描述 给出 \(N\) 个正整数 \(a[1..N]\) ,再给出一个正整数 \(k\) ,现在可以进行如下操作:每次选择一个大于 \(k\) 的正整数 \(a[i]\) ,将 \(a[i]\) ...
- async/await和Grand Central Dispatch代码切换
很多iOS开发开始学习结构化并发时已经用过了很多年Grand Central Dispatch,虽然从思想上二者区别很大,但是利用熟悉的东西去理解新的事物有助于提升学习理解的效率,接下来是这Grand ...
- 第44天:WEB攻防-PHP应用&SQL盲注&布尔回显&延时判断&报错处理&增删改查方式
#PHP-MYSQL-SQL操作-增删改查 1.功能:数据查询 查询:SELECT * FROM news where id=$id 2.功能:新增用户,添加新闻等 增加:INSERT INTO ne ...
- 排查maven 冲突及解决方式
Maven Maven 是一个以项目为中心的自动化构建工具,主要用于Java项目的管理和构建.它提供了一种统一的方式来描述项目的结构.依赖关系和构建过程,简化了项目的构建和管理. Maven 的主要特 ...
- Spring 之 RestTemplate VS WebClient 发送 HTTP请求
WebClient 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifact ...
- angularjs中控制视图的控制器的两种注入依赖项及服务的写法
在AngularJS中,控制器是用于控制视图行为的重要组件.当定义控制器时,有两种主要的方式注入依赖项: 1. 显式依赖注入,聚聚使用字符串数组形式来注入依赖项: myapp.controller(' ...
- 冒泡排序和一点优化(php)
function maopao($arr){ $len = count($arr);//获取数组的长度 //有多少个数组元素就最多就要排n-1次 for ($j=0;$j<$len-1;$j++ ...
- python:批量删除指定文件目录中多个文件
#coding:utf-8# 任务需要,需要删除多余的文件,手动删除太麻烦,几行python搞定 import os from glob import glob path = r"/medi ...
- pytorch中y.data.norm()的含义
import torch x = torch.randn(3, requires_grad=True) y = x*2 print(y.data.norm()) print(torch.sqrt(to ...
- 墨天轮访谈 | OceanBase 白超:海量数据管理,为什么选择OceanBase?
分享嘉宾:白超(大窑) OceanBase解决方案架构师.前蚂蚁集团数据库团队DBA专家 整理:墨天轮社区 导 读 大家好,我是白超(花名:大窑),在过去的几年中,作为蚂蚁集团数据库SRE团队成员,经 ...