探索iOS转场动画

news2024/11/28 22:39:16

iOS提供图像转场动画,可实现酷炫的转场特效。动画包括:溶解、折叠、复印机、暴露、翻页、波纹、滑动等等。

一、溶解动画

CIDissolveTransition提供溶解动画,我们来看看对应的转场动画效果:

在CIFilter指定CIDissolveTransition,使用smoothstep函数生成时间,示例代码如下:

import simd

func dissolveFilter(_ inputImage: CIImage, 
                    to targetImage: CIImage, 
                    time: TimeInterval) -> CIImage? {
        
    let inputTime = simd_smoothstep(0, 1, time)
        
    guard let filter = CIFilter(name:"CIDissolveTransition",
                                    withInputParameters:
        [
            kCIInputImageKey: inputImage,
            kCIInputTargetImageKey: targetImage,
            kCIInputTimeKey: inputTime
        ]) else {
            return nil
    }
        
    return filter.outputImage
}

使用CADisplayLink来开始执行动画,添加到run loop,示例如下:

func beginTransition() {
        
    time = 0
    dt = 0.005
        
    displayLink = CADisplayLink(target: self,
                                selector: #selector(stepTime))
    displayLink.add(to: RunLoop.current,
                    forMode: RunLoopMode.defaultRunLoopMode)
}

如果超过1s动画结束,移除displayLink,否则更新动画:

@objc
func stepTime() {
    
   time += dt
        
   if time > 1 {
       displayLink.remove(from:RunLoop.main, forMode:RunLoopMode.defaultRunLoopMode)
   } else {
       guard let dissolvedCIImage = dissolveFilter(sourceCIImage,
                                                   to:finalCIImage,
                                                   time:time) else {
                                                      return
       }

       let cgImage = context.createCGImage(dissolvedCIImage, 
                                           from: dissolvedCIImage)
       imageView.image = UIImage(CGImage:cgImage)
   }
}

二、折叠动画

CIAccordionFoldTransition折叠动画,输入参数如下表所示:

参数描述
inputNumberOfFolds折叠数量,默认:3.0, 最小值:1.0, 最大值:50.0
inputFoldShadowAmount阴影数量,默认:0.1, 最小值:0.0, 最大值:1.0
inputTime时间,默认:0.0, 最小值:0.0, 最大值:1.0

 三、复印机动画

CICopyMachineTransition复印机动画,输入参数如下表所示:

参数描述
inputExtent输入矩形,默认值[0,0,300,300]
inputColor输入颜色
inputTime输入时间,默认值为0
inputAngle输入角度,默认值为0
inputWidth输入宽度,默认值为200
inputOpacity透明度,默认值为1.3

复印机的转场动画如下:

 四、暴露动画

CIModTransition暴露动画,是显示一个个不规则形状的洞,输入参数如下:

参数描述
inputCenter中心点,默认值[150,150]
inputTime输入时间,默认值为0
inputAngle输入角度,默认值为20
inputRadius输入半径,默认值为150.0
inputCompression压缩,默认值为300

对应的转场动画效果:

 五、翻页动画

CIPageCurlWithShadowTransition提供翻页动画,输入参数如下:

参数描述
inputExtent面积,默认值[0,0,0,0]
inputTime输入时间,默认值为0
inputAngle输入角度,默认值为0
inputRadius输入半径,默认值100,最小值0.01,最大值400

翻页的转场动画如下: 

 六、波纹动画

CIRippleTransition提供波纹动画,输入参数如下:

参数描述
inputCenter中心点,默认值[150,150]
inputExtent面积,默认值[0,0,300,300]
inputTime输入时间,默认值为0
inputWidth输入宽度,默认值为100
inputScale缩放系数,默认值为50.0

波纹动画效果如下:

七、滑动动画

CISwipeTransition提供滑动动画,输入参数如下:

参数描述
inputExtent面积,默认值[0,0,300,300]
inputColor颜色
inputTime时间,默认值为0
inputAngle角度,默认值为0
inputWidth宽度,默认值为300
inputOpacity透明度,默认值为0

滑动的转场动画,可以指定角度实现从上到下、从下到上、从左到右、从右到左。效果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/576655.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt线程基础,多线程使用注意点,目前支持的线程种类。

Qt线程基础 一、什么是线程?二、GUI线程和工作线程三、同时访问数据四、使用线程1、何时使用线程的替代品2、应该用哪种Qt线程技术? 六、Qt中的多线程技术1、QThread:带有可选事件循环的低级API2、QThreadPool和QRunnable:重用线程 七、Qt Concurrent:使…

集成学习以及随机森林介绍

一、集成学习简介 1.什么是集成学习? 集成学习(Ensemble Learning)是一种机器学习方法,通过将多个弱学习器(weak learner)组合在一起来构建一个更强大的学习器(strong learner)。 …

C语言进阶——字符函数和字符串函数(下)

在前面我们已经学习了strlen、strcpy、strcat、strcmp几个库函数,今天我们继续学习剩余的库函数。 上期链接: C语言进阶——字符函数和字符串函数(上)_wangjiushun的博客-CSDN博客 目录: 3、长度受限制的字符串函数…

Redis(四)持久化策略

文章目录 持久化策略1、为什么Redis需要持久化2、Redis提供的两种持久化方式(1)RGB持久化详解概述RGB持久化的两种触发策略手动触发实例测试:自动触发实例测试: 查看rdb的状态信息info Persistence rdb模式的优缺点 (2)AOF持久化详解AOF持久化步骤&#…

近期复盘 | 想多了都是问题,想开了都是答案

文章目录 🌹四月坚持背单词,五月坚持利用AI写文章😊六月会坚持干什么🙌23年7月:毕业两年,参保两年👀强制存储,消费降级,开源节流😜好好深耕能力🎁…

JavaScript 进阶 (一)

目录 作用域 局部作用域 函数作用域 块作用域 全局作用域 作用域链 JS垃圾回收机制 闭包 变量提升 函数进阶 函数提升 函数参数 箭头函数 基本语法 箭头函数参数 箭头函数this 解构赋值 数组解构 对象解构 遍历数组 forEach 方法(重点) …

shell SNAT与DNAT

文章目录 SNATSNAT原理与应用SNAT实验 DNATDNAT原理与应用DNAT实验 SNAT SNAT原理与应用 SNAT 应用环境:局域网主机共享单个公网IP地址接入Internet(私有不能早Internet中正常路由) SNAT原理:修改数据包的源地址。 SNAT转换前提…

文心一言 VS 讯飞星火 VS chatgpt (23)-- 算法导论4.2 5题

五、V.Pan 发现一种方法,可以用 132 464 次乘法操作完成 68 x 68 的矩阵相乘,发现另一种方法,可以用 143 640 次乘法操作完成 70 x 70 的矩阵相乘,还发现一种方法,可以用155 424次乘法操作完成 72 x 72 的矩阵相乘。当…

数据安全治理科技产品能力-数据安全复合治理框架和模型解读(2)

数据治理,数据安全治理行业在发展,在实践,所以很多东西是实践出来的,哪有什么神仙理论指导,即使有也是一家之说,但为了提高企业投产比,必要的认知是必须的,落地数据安全治理科技水平差异直接决定产品和项目是否可持续性,当前和未来更需要专业和有效创新。数据安全治理…

自动驾驶业内动态简讯

1. 引言 参与自动驾驶领域相关研发工作已有多年,针对该领域的快速发展,收集业内各大科技公司最新进展和技术突破,供伙伴们交流探讨。 闲话少说,直接开始吧! 2. 博世 据新闻介绍,博世在德国道路上测试L4级无人驾驶汽…

java 区分缺陷Defects/感染Infections/失败Failure

java 区分缺陷Defects/感染Infections/失败Failure 缺陷Defects 软件故障总是从代码中一个或多个缺陷的执行开始。 缺陷只是一段有缺陷、不正确的代码。 缺陷可能是程序语句的一部分或完整部分,也可能对应于不存在但应该存在的语句。 尽管程序员要对代码中的缺陷负…

基于SSM的甜品店商城系统

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着社会经济的发展和…

Altium Designer 相同电路多组复制布线

在进行设计开发的时候,总会遇到相同的电路,或者模块,这些电路可以使用相同的布局和走线。我们可以画好其中一部分,然后直接复制,就可以提高效率。下面记录我自己的实际操作过程,有一些地方遇到了问题&#…

Android | Android OS 源码结构

参考:AndroidXRef (http://androidxref.com/)版本:Pie - 9.0.0_r3 整体结构 对于 Android OS 的源码目录来说,各个版本的结构大同小异,随不同版本特性会有个别目录差异。编译后会额外产生一个 out 文件夹用于存储编译产生的文件。…

Unity使用SteamVR2.0实现基本功能(瞬移,抓取物品,射线点击,UI交互等)

基础设置 把SteamVR的Player预制件拖到一个空场景,删掉场景内原本的相机 一.瞬移 新建一个Plane,当做地板找到SteamVR的人物瞬移控制器 Teleporting ,把它拖到场景里 1. 范围移动 我们需要在可以移动的区域,也就是碰撞器上,挂TeleportArea脚本 这个脚本会自动修改你的材质球…

抖音seo源码--开源,支持二开不加密

抖音seo源码,抖音seo矩阵系统源码技术搭建,抖音seo源码技术开发思路梳理搭建 开发思路: 抖音seo源码如何搭建?抖音seo排名优化系统软件部分源码分析,代码打包中。。。 场景:在 python 中,你可…

windows下修改PyCharm默认terminal 在Git Bash中使用conda

windows下修改PyCharm默认terminal & 在Git Bash中使用conda windows下修改PyCharm默认terminal在Git Bash中使用conda windows下修改PyCharm默认terminal PyCharm的terminal默认使用的是powershell,但是conda环境是通过cmd运行的,因此可以将PyChar…

安捷伦N5182A是德KEYSIGHT N5182B 100KHZ至3G/6G信号发生器

Agilent N5182A、Keysight N5182A MXG 射频矢量信号发生器,100 kHz - 3 GHz 或 6 GHz ​Keysight N5182A (Agilent) MXG 射频矢量信号发生器具有快速频率、幅度和波形切换、带电子衰减器的高功率和高可靠性 – 所有这些都集成在两个机架单元 (2RU) 中。Keysight N5…

H743 USBHOST协议栈 CPU占用率高的问题。

经过查看,是因为USBHOST频繁的进入中断导致,单步执行发现,是因为发生了USB_OTG_HCINT_CHH或者USB_OTG_HCINT_NAK中断了,只在CHH中断服务函数里,给USB主线程发了1个消息,又引起了USBH_Process_OS主线程的频繁…

YOLOV7训练TT100K交通标识符数据集

《临江仙》 作者:缠中说禅 浊水倾波三万里,愀然独坐孤峰。龙潜狮睡候飙风。无情皆竖子,有泪亦英雄。 长剑倚天星斗烂,古今过眼成空。乾坤俯仰任穷通。半轮沧海上,一苇大江东。 一、yolov7环境搭建 参…