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实现旋转动画的更多相关文章

  1. iOS 帧动画之翻转和旋转动画

    记录两个比较简单的动画,一个是翻转的动画,一个是旋转的动画. 旋转动画: 1 [UIView animateWithDuration:3 animations:^{ if (formView) { f ...

  2. AJ学IOS(39)UI之核心动画之CABasicAnimation(基础动画)

    AJ分享,必须精品 一.CABasicAnimation简介 CAPropertyAnimation的子类 属性解析: fromValue:keyPath相应属性的初始值 toValue:keyPat ...

  3. iOS开发--QQ音乐练习,旋转动画的实现,音乐工具类的封装,定时器的使用技巧,SliderBar的事件处理

    一.旋转动画的实现 二.音乐工具类的封装 -- 返回所有歌曲,返回当前播放歌曲,设置当前播放歌曲,返回下一首歌曲,返回上一首歌曲方法的实现 头文件 .m文件 #import "ChaosMu ...

  4. ios开发——实用技术篇&三维旋转动画

    实现三位旋转动画的方法有很多种,这里介绍三种 一:UIView 1 [UIView animateWithDuration:1.0 animations:^{ 2 self.iconView.laye ...

  5. iOS 特定图片的button的旋转动画

    近期做的东西中,要为一个有特定图片的button加入旋转动画,Demo代码例如以下: #import "ViewController.h" @interface ViewContr ...

  6. 【原】iOS学习44之动画

    1. 简单动画 1> UIImageView GIF 动画 GIF图的原理是:获取图片,存储在图片数组中,按照图片数组的顺序将图片以一定的速度播放 UIImageView *showGifima ...

  7. IOS开发系列 --- 核心动画

    原始地址:http://www.cnblogs.com/kenshincui/p/3972100.html 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动画的过程并不复杂,今天将带大家一窥i ...

  8. [iOS Animation]-CALayer 显示动画

    显式动画 如果想让事情变得顺利,只有靠自己 -- 夏尔·纪尧姆 上一章介绍了隐式动画的概念.隐式动画是在iOS平台创建动态用户界面的一种直接方式,也是UIKit动画机制的基础,不过它并不能涵盖所有的动 ...

  9. iOS开发之核心动画(Core Animation)

    1.概述 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍,使用它需要先添加QuartzCore.framework和引入对应的框架< ...

  10. iOS - Core Animation 核心动画

    1.UIView 动画 具体讲解见 iOS - UIView 动画 2.UIImageView 动画 具体讲解见 iOS - UIImageView 动画 3.CADisplayLink 定时器 具体 ...

随机推荐

  1. Kubernetes Pod原理(十六)

    一.Pod Kubernetes 最基本的调度单元 前面我们了解了 Kubernetes 的基本架构,以及如何使用资源清单在集群中部署一个应用.我们也了解到了 Pod 是 Kubernetes 集群中 ...

  2. Linux运行脚本./XXXsh: line 1: $‘\r‘: command not found问题

    Linux运行脚本./XXXsh: line 1: $'\r': command not found问题   在执行./xxx.sh命令时,系统报错: ./xxx.sh: line 1: $'\r': ...

  3. 【USB3.0协议学习】Topic3·三种Reset Events分析

    USB3.0中的三种Reset Events 1. PowerOn Reset PowerOn Reset被用来代指上电复位,当一个device接入到root hub或者外置hub的时候,该devic ...

  4. iOS开发Block使用详解

    项目开发中经常会用到页面之间传值的问题,常用的方法是通知.单例.代理.block等.最近项目忙完,有空细细研究了一下block的用法,收货多多. block又称闭包,它的实现原理是c语言的函数指针.函 ...

  5. C#WebApi 对数据进行缓存加快前请求数据的速度

    using ClassLibrary1; using ClassLibrary2; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions ...

  6. 全局和局部混入 mixins

    使用 mixins 混入 的目的 :复用代码,维护代码 : 局部混入: 全局混入 + 按钮权限控制 : ps:定义一个方法 ,checkPermission (str) str 是按钮的权限标识 , ...

  7. kotlin更多语言结构——>空安全

    可空类型与非空类型 Kotlin 的类型系统旨在从我们的代码中消除 NullPointerException .NPE 的唯一可能的原因可能是: -  显式调用 throw NullPointerEx ...

  8. day09-类型转换

    类型转换 由于Java是强类型语言,所以要进行有些运算的时候,需要用到类型转换 低-----------------------------------------------------高 byte ...

  9. Nginx UI:全新的 Nginx 在线管理平台

    前言 Nginx在程序部署中扮演着至关重要的角色,其高性能.高安全性.易于配置和管理的特点,使得它成为现代Web应用部署中不可或缺的一部分.今天大姚给大家分享一款实用的 Nginx Web UI 工具 ...

  10. C++版的Mc

    非常垃圾的c++版Mc. #include<bits/stdc++.h> #include<windows.h> #include<conio.h> using n ...