swift 的水波动画或雷达动画效果
刚接触不久iOS开发,拖拉拽开始学习,代码还没接触过,但还算看的半懂!
做成动画扩散效果,这图不是动态的,是我直接截图下来的;
拿别人的代码自己删改了一些,然后加一些自己理解的注释上去,就成这样了!记录下来
1. 在图片名 那里加入一张自己文件中的图片名,
2.如果你的动图中间不想要图片,就把在动图中间加入了图片这句下的代码注释掉,把没有加入图片这句下的代码放开注释就可以了
import UIKitclass ViewController: UIViewController {private let radarAnimation = "radarAnimation" //对象1private var animationLayer: CALayer? //对象2private var animationGroup: CAAnimationGroup? //对象3private var imageview : UIImageView! //定义图片viewoverride func viewDidLoad() {super.viewDidLoad()// Do any additional setup after loading the view, typically from a nib.//没有加入图片//let first = makeRadarAnimation(showRect: CGRect(x: 120, y: 200, width: 150, height: 150), isRound: true) //调用 方法:makeRadarAnimation(...)// view.layer.addSublayer(first) //显示动画 调用显示//在动图中间加入了图片imageview = UIImageView(frame: CGRect(x: 120, y: 200, width: 150, height: 150))imageview.image = 图片名 //图片view.addSubview(imageview) //把图片放到view中去let imagev = makeRadarAnimation(showRect: imageview.frame, isRound: true)view.layer.insertSublayer(imagev, below: imageview.layer) //动画显示 将图片压后放后放}override func didReceiveMemoryWarning() {super.didReceiveMemoryWarning()// Dispose of any resources that can be recreated.}//动作-开始 按钮@IBAction func startAction(_ sender: UIButton) {animationLayer?.add(animationGroup!, forKey: radarAnimation)}//动作-停止 按钮@IBAction func stopAction(_ sender: UIButton) {animationLayer?.removeAnimation(forKey: radarAnimation)}// 动态波的方法private func makeRadarAnimation(showRect: CGRect, isRound: Bool) -> CALayer {// 1. 一个动态波let shapeLayer = CAShapeLayer()shapeLayer.frame = showRect// showRect 最大内切圆shapeLayer.path = UIBezierPath(ovalIn: CGRect(x: 0, y: 0, width: showRect.width, height: showRect.height)).cgPathshapeLayer.fillColor = UIColor.white.cgColor //波纹颜色shapeLayer.opacity = 0.0 // 默认初始颜色透明度animationLayer = shapeLayer //全局对象2 animationLayer// 2. 创建动画组 from -> to 透明比例过渡let opacityAnimation = CABasicAnimation(keyPath: "opacity")opacityAnimation.fromValue = NSNumber(floatLiteral: 1.0) // 开始透明度opacityAnimation.toValue = NSNumber(floatLiteral: 0) // 结束时透明底// 3. 波纹动画 起始大小let scaleAnimation = CABasicAnimation(keyPath: "transform")if isRound {scaleAnimation.fromValue = NSValue.init(caTransform3D: CATransform3DScale(CATransform3DIdentity, 1.0, 1.0, 0)) // 缩放起始大小} else {scaleAnimation.fromValue = NSValue.init(caTransform3D: CATransform3DScale(CATransform3DIdentity, 1.5, 1.5, 0)) // 缩放起始大小}scaleAnimation.toValue = NSValue.init(caTransform3D: CATransform3DScale(CATransform3DIdentity, 2.0, 2.0, 0)) // 缩放结束大小// 4. 定义波的运行时间let animationGroup = CAAnimationGroup()animationGroup.animations = [opacityAnimation, scaleAnimation] //引用opacityAnimation 和 scaleAnimationanimationGroup.duration = 3.0 // 动画执行时间animationGroup.repeatCount = HUGE // 最大重复animationGroup.autoreverses = falseself.animationGroup = animationGroup //全局对象3 animationGroupshapeLayer.add(animationGroup, forKey: radarAnimation) //全局对象1 radarAnimation// 5. 需要重复的动态波,数量,缩放起始点 <=> 创建副本let replicator = CAReplicatorLayer()replicator.frame = shapeLayer.boundsreplicator.instanceCount = 4replicator.instanceDelay = 1.0replicator.addSublayer(shapeLayer)return replicator}}
参考来源:https://blog.csdn.net/xxh0307/article/details/80069007
swift 的水波动画或雷达动画效果相关推荐
- 【Android App】Vulkan实现宇宙中旋转雷达动画效果(附源码和原始视频 超详细必看)
需要源码请点赞关注收藏后评论区留言私信~~~ 一.Vulkan简介 Vulkan是一个跨平台的图形绘制接口,被称为下一代OpenGL,因为尽管OpenGL提供了丰富的图形API,但他在底层实现的C代码 ...
- 万字长文!View的进阶,自定义一款自带动画的雷达图
点击上方 "程序员小乐"关注, 星标或置顶一起成长 关注订阅号「程序员小乐」,收看更多精彩内容 每日英文 You can't change the past, but you ca ...
- View的进阶,自定义一款自带动画的雷达图
/ 今日科技快讯 / 近日工信部发放四张5G商用牌照,中国联通.中国移动.中国电信和中国广播电视网络有限公司各得到一张牌照.中国的5G商用元年正式开启.5G牌照的发放,将推升产业链的成熟.加快 ...
- Android 动画之View动画效果和Activity切换动画效果
View动画效果: 1.>>Tween动画 通过对View的内容进行一系列的图形变换(平移.缩放.旋转.透明度变换)实现动画效果,补间动画需要使用<set>节点作为根节点,子节 ...
- Android动画开发——Animation动画效果
动画类型 Android的animation由四种类型组成 XML中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面 ...
- Unity3d中使用自带动画系统制作下雨效果(一)
之前看了以前版本的unity3d demo AngryBots ,觉得里面的下雨效果不错,刚好前段时间学习了,写出来跟大家分享下,直接开始. 使用自带动画系统制作下雨效果. 先制作下雨的雨滴涟漪. 步 ...
- html首页 slider图片切换效果,jQuery插件Slider Revolution实现响应动画滑动图片切换效果...
jQuery插件Slider Revolution实现响应动画滑动图片切换效果 2018-12-31 编程之家 https://www.jb51.cc 这是一款非常强大的内容切换插件,它基于jQuer ...
- CAReplicatorLayer复制Layer和动画, 实现神奇的效果
今天我们看下CAReplicatorLayer, 官方的解释是一个高效处理复制图层的中间层.他能复制图层的所有属性,包括动画. 一样我们先看下头文件 @interface CAReplicatorLa ...
- Unity3D 4.x怎样实现动画的Ping Pong效果
近期在看Unity官方的Stealth项目教学视频.视频使用的是Unity旧的版本号,而我如今正在使用的是Unity 4.5,动画系统的操作全然不同了.依照视频的方式根本无法设置动画的Ping Pin ...
- Android App开发动画特效之实现百叶窗动画和马赛克动画效果实战演示(附源码和演示视频 可直接使用)
需要图片集和源码请点赞关注收藏后评论区留言~~~ 一.实现百叶窗动画 合理运用图层规则可以实现酷炫的动画效果,比如把图片分割成一条一条,接着每条都逐渐展开,这便产生了百叶窗动画,把图片等分为若干小方格 ...
最新文章
- 除了缺少点创意,GPT-3写出了及格的大学毕业论文,只需20分钟
- nyquist图怎么画matlab,用MATLAB绘制Nyquist图
- 【Codeforces 986B】Petr and Permutations
- MySQL 可重复读,差点背上一个 P0 事故!
- 依赖注入:一个Mini版的依赖注入框架
- ae中心点重置工具_AE中图形绘制的6大技巧,简单易操作
- ubuntu系统启动qtceator时提示:Qt5.5.1/Tools/QtCreator/lib/qtcreator/plugins/libHelp.so: 无法加载库...
- springmvc spring mybatis结合 - 代码共享
- Leetcode 814.二叉树剪枝
- java poi jar包下载_poi.jar包下载
- 预加重/去加重/直流滤波
- 威纶通与三菱PLC条码枪解码程序 本程序是威纶通触摸屏USB接头直接插条形码扫码枪
- 手把手教你十分钟学会使用小程序云存储
- 解决hbase客服端连接服务端不报错就是一直连不上的问题
- 成功真正需要什么:情商德商及体商 别高估智商
- oracle job remove,如何删除oracle Job命令实例
- ETC是什么,ETC系统主要有哪几部分构成?
- 用代码写个烟花之基础版
- jquery之empty()方法详解
- nginx的作用与原理