[Swift通天遁地]八、媒体与动画-(9)快速实现复合、Label、延续、延时、重复、缓冲、弹性动画

本文将演示多种动画类型效果。

首先确保已经安装了所需的第三方类库。双击查看安装配置文件【Podfile】

1 platform :ios, ‘8.0‘
2 use_frameworks!
3
4 target ‘DemoApp‘ do
5     source ‘https://github.com/CocoaPods/Specs.git‘
6     pod ‘Cheetah‘
7 end

根据配置文件中的相关设置,安装第三方类库。

安装完成之后,双击打开项目文件【DemoApp.xcodeproj】

在左侧的项目导航区,打开视图控制器的代码文件【ViewController.swift】

  1 import UIKit
  2 //引入已经安装的第三方类库
  3 import Cheetah
  4
  5 class ViewController: UIViewController {
  6
  7     //初始化一个视图对象,作为动画的载体。
  8     var box : UIView!
  9     override func viewDidLoad() {
 10         super.viewDidLoad()
 11         // Do any additional setup after loading the view, typically from a nib.
 12
 13         //对视图对象进行初始化操作
 14         box = UIView(frame:CGRect(x: 0, y: 100, width: 100, height: 100))
 15         //设置视图对象的背景颜色为橙色
 16         box.backgroundColor = UIColor.orange
 17         //将视图对象添加到根视图
 18         self.view.addSubview(box)
 19         //创建复合动画
 20         parallelExecution()
 21         //创建标签动画
 22         labelAnimation()
 23         //创建一组k刚性动画
 24         serialExecution()
 25         //创建一个无限循环的动画
 26         repeatingAnimation()
 27         //创建一个缓冲动画
 28         easingsAnimation()
 29         //创建弹性动画
 30         springAnimation()
 31     }
 32
 33     //添加一个方法,用来创建复合动画
 34     func parallelExecution()
 35     {
 36         //将视图对象向右移动100点到距离
 37         box.cheetah.move(100, 0)
 38             //同时旋转360度
 39             .rotate(.pi * 2)
 40             //将视图对象放大1.5倍
 41             .scale(1.5)
 42             //将视图对象设置为半透明
 43             .alpha(0.5)
 44             //更改视图对象的背景颜色
 45             .backgroundColor(UIColor.cyan)
 46             //给视图对象添加宽度为10的边框
 47             .borderWidth(10)
 48             //设置边框的颜色为蓝色
 49             .borderColor(UIColor.blue)
 50             //给视图添加半径为30的圆角
 51             .cornerRadius(30)
 52             //通过调用运行命令,开始动画的播放。
 53             .run()
 54     }
 55
 56      //添加一个方法,用来创建标签动画
 57     func labelAnimation()
 58     {
 59         //初始化一个指定显示区域的标签控件
 60         let label = UILabel(frame: CGRect(x: 100, y: 100, width: 200, height: 40))
 61         //设置标签控件的文字内容
 62         label.text = "HELLO Strengthen!"
 63         //将标签控件添加到根视图
 64         view.addSubview(label)
 65
 66         //给标签控件添加一个向下的位移动画
 67         label.cheetah
 68             //设置动画的时长和缓冲属性
 69             .move(0, 30).duration(0.5).easeOutBack
 70             //更改文字的颜色
 71             .textColor(UIColor.red)
 72             //动画播放到当前位置时,暂停一秒钟,然后再执行之后的动画。
 73             .wait(1)
 74             //给标签控件添加一个向上的位移动画,并设置动画的时长和缓冲属性
 75             .move(0, -30).duration(0.5).easeOutBack
 76             //再次调整文字的颜色
 77             .textColor(UIColor.blue)
 78             //继续暂停一秒钟
 79             .wait(1)
 80             //通过调用运行命令,开始动画的播放。
 81             .run()
 82     }
 83
 84      //添加一个方法,用来创建一组刚性动画
 85     func serialExecution()
 86     {
 87         //将视图移动一定距离,并旋转180度。
 88         box.cheetah.move(100, 100).rotate(M_PI)
 89             //添加一个等待方法,然后开始第二段动画。
 90             .wait()
 91             //将视图移动至原来的位置,并旋转负180度。
 92             .move(-100, -100).rotate(-M_PI)
 93             //添加一个等待方法,1秒钟后开始第三段动画。
 94             .wait(1.0)
 95             //在0.4秒的时间里,将视图对象下移一段距离。
 96             .move(0, -40).duration(0.4)
 97             //添加一个等待方法,开始第四段动画。
 98             .wait()
 99             //在0.4秒的时间里,将视图对象返回至原来的位置
100             .move(0, 40).duration(0.4)
101             //调用运行命令,开始动画的播放。
102             .run()
103     }
104
105      //添加一个方法,用来创建一个无限循环的动画
106     func repeatingAnimation()
107     {
108         //将视图对象移动到根视图的中心位置。
109         box.center = self.view.center
110         //给视图对象添加一个y旋转动画,并设置动画的播放模式为无限循环。
111         _ = box.cheetah.rotate(M_PI_2).run().forever
112     }
113
114      //添加一个方法,用来创建一个缓冲动画
115     func easingsAnimation()
116     {
117         //初始化一个缓冲类型的数组对象,
118         //作为六个视图的动画类型。
119         let easeIns = [
120             Easings.linear,
121             Easings.easeInSine,
122             Easings.easeInQuad,
123             Easings.easeInQuart,
124             Easings.easeInQuint,
125             Easings.easeInCirc
126         ]
127          //初始化另一个缓冲类型的数组对象
128         let easeOuts = [
129             Easings.linear,
130             Easings.easeOutSine,
131             Easings.easeOutQuad,
132             Easings.easeOutQuart,
133             Easings.easeOutQuint,
134             Easings.easeOutCirc
135         ]
136         //创建另一个颜色数组对象,作为视图的背景颜色。
137         let colors = [
138             UIColor.orange,
139             UIColor.brown,
140             UIColor.red,
141             UIColor.purple,
142             UIColor.magenta,
143             UIColor.cyan
144         ]
145         //添加一个循环语句,用来创建视图对象,
146         //以及设置视图的动画属性。
147         for i in 0..<6
148         {
149             //初始化一个视图对象,并根据循环语句的索引,设置视图对象的坐标。
150             let ebox = UIView(frame: CGRect(x: 20, y: 240 + 35 * CGFloat(i), width: 30, height: 30))
151             //设置视图对象的背景颜色
152             ebox.backgroundColor = colors[i]
153             //将视图对象添加到根视图
154             self.view.addSubview(ebox)
155
156             //给视图对象添加一个缓冲动画,并设置动画的缓冲方式。
157             _ = ebox.cheetah.move(200, 0).ease(easeOuts[i])
158                 //设置位移动画的时长为2秒
159                 .duration(2)
160                 //将视图对象旋转一周
161                 .rotate(M_PI*2)
162                 //设置旋转动画的缓冲方式
163                 .ease(easeOuts[i])
164                 //设置旋转动画的时长同样为2秒
165                 .duration(2)
166                 //添加一个等待语句,接着再执行下一个动画。
167                 .wait()
168                 //将视图对象移动至原来的位置。
169                 .move(-200, 0)
170                 //设置位移动画的缓冲方式
171                 .ease(easeIns[i])
172                 //设置位移动画的时长为2秒
173                 .duration(2)
174                 //将视图对象倒转一周
175                 .rotate(-M_PI*2)
176                 //同样设置旋转动画的缓冲方式
177                 .ease(easeIns[i])
178                 //设置旋转动画的时长同样为2秒
179                 .duration(2)
180                 //添加一个等待语句
181                 .wait()
182                 //通过调用运行命令,开始动画的播放
183                 .run()
184                 //给动画添加无限循环的属性。
185                 .forever
186         }
187     }
188
189      //添加一个方法,用来创建弹性动画
190     func springAnimation()
191     {
192         //给视图对象添加一个位移动画
193         box.cheetah
194             .move(200, 0)
195             //添加位移动画的弹簧属性,
196             //设置弹簧的张力为20,摩擦力为4。
197             .spring(tension: 20, friction: 4)
198             //调用运行命令,开始动画的播放。
199             .run()
200     }
201
202     override func didReceiveMemoryWarning() {
203         super.didReceiveMemoryWarning()
204         // Dispose of any resources that can be recreated.
205     }
206 }

原文地址:https://www.cnblogs.com/strengthen/p/10354616.html

时间: 2024-10-07 11:00:34

[Swift通天遁地]八、媒体与动画-(9)快速实现复合、Label、延续、延时、重复、缓冲、弹性动画的相关文章

[Swift通天遁地]八、媒体与动画-(6)使用开源类库快速实现滑入动画

本文将演示使用第三方类库,快速实现一个从上向下滑入的动画. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'Spring', :git => 'https://github.com/MengTo/Spring.git' 7 e

[Swift通天遁地]八、媒体与动画-(7)实现多个动画的顺序播放效果

本文将演示使用第三方类库,实现多个动画的顺序播放效果. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'Spring', :git => 'https://github.com/MengTo/Spring.git' 7 end

[Swift通天遁地]八、媒体与动画-(8)使用开源类库快速实现位移动画

本文将演示使用第三方类库,快速实现位移动画. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, '8.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'Cheetah' 7 end 根据配置文件中的相关设置,安装第三方类库. 安装完成之后,双击打开项目文件[DemoApp.xcodep

[Swift通天遁地]八、媒体与动画-(10)在项目中播放GIF动画

本文将演示使用第三方类库播放GIF动画. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, '12.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'SwiftGifOrigin', '~> 1.6.1' 7 end 根据配置文件中的相关设置,安装第三方类库. 安装完成之后,双击打开项

[Swift通天遁地]八、媒体与动画-(11)实现音乐播放的动态视觉效果

本文将演示使用第三方类库实现音乐播放的动态视觉效果. 首先确保已经安装了所需的第三方类库.双击查看安装配置文件[Podfile] 1 platform :ios, ‘12.0’ 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'AudioIndicatorBars' 7 end 根据配置文件中的相关设置,安装第三方类库. 安装完成之后,双击打开项目文

[Swift通天遁地]八、媒体与动画-(1)实现音频的播放和停止

本文将演示实现对音频播放的控制. 首先确保在项目中,已经安装了所需的第三方类库,点击查看安装的配置文件. 1 platform :ios, '8.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'CryptoSwift', :git => "https://github.com/krzyzanowskim/CryptoSwift"

[Swift通天遁地]八、媒体与动画-(3)实现视频播放的水印、Overlay、暂停时插入广告等效果

本文将演示使用第三方类库实现视频视频播放的水印.Overlay.暂停时插入广告等效果. 首先确保在项目中,已经安装了所需的第三方类库,点击查看安装的配置文件. 1 platform :ios, '8.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'MobilePlayer' 7 end 根据配置文件中的相关设置,安装第三方类库. 完成安装之后

[Swift通天遁地]八、媒体与动画-(2)实现视频文件的播放和画中画

本文将演示使用AVPlayerViewController播放视频并实现画中画. 往项目中导入了一个视频文件. 在左侧的项目导航区,打开视图控制器的代码文件[ViewController.swift] 1 import UIKit 2 //在当前的类文件中, 3 //引入需要用到的相关类库 4 import AVFoundation 5 import AVKit 6 7 class ViewController: UIViewController, AVPlayerViewControllerD

[Swift通天遁地]八、媒体与动画-(4)给相机添加CoreImage滤镜效果

本文将演示如何给相机添加实时的滤镜效果. 首先打开项目的配置文件[Info.plist],在空白区域点击鼠标右键,弹出右键菜单. 选择[Add Row]添加行命令,添加一行配置选项. 在[Key]键输入框输入相机的访问标识:[Application Category] 在[Value]值输入框输入当应用程序访问相机设备时的提示语: [Requires access to the camera] 在左侧的项目导航区,打开视图控制器的代码文件[ViewController.swift] 现在开始编写