Swift UILabel 数字动画效果
昨天去面试 面试官问我 如何实现 label数字由低到高增长。特地整理了一下
用的时候 只要调用这个类 即可实现 在多少s内 有 min - max 的方法
///自己写的一个类
class UIZJLAnimationLab: UILabel {
///计时器比 NSTimer精确
var timer:CADisplayLink!
///进程戳 从开始计时到实时的时间戳 后面会与传进来的最长时间对比
var progress:NSTimeInterval!
///最后一次记录时间戳
var lastupdate:NSTimeInterval!
///多长时间完成的参数
var totalupdate:NSTimeInterval!
///最开始的计数
var startValue:Float!
///将要结束的参数
var endValue:Float!
///想要以Int类型 还是Float类型增长
var type:ZJLAnimationType!
var newText:String{
get {
return updateNewinfo()
}
}
init(frame: CGRect,type:ZJLAnimationType) {
super.init(frame: frame)
self.type = type
}
func initCadisplayLink() {
progress = 0
timer = CADisplayLink(target: self,selector: #selector(UIZJLAnimationLab.timerclick(_:)))
timer.addToRunLoop(NSRunLoop.currentRunLoop(), forMode: NSDefaultRunLoopMode)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func timerclick(sender:CADisplayLink) {
///当执行这个方法时候 判断当前时间戳与 lastupdate这个参数的差 直到 将其相加 直到与 totalupdate 相等时 即为消耗了等量时间 此时强行将text职位endvalue
///记录当前时间戳
let now:NSTimeInterval = NSDate.timeIntervalSinceReferenceDate()
///当前时间 减去 开始事件
progress = now - lastupdate
if (now - lastupdate) >= totalupdate {
progress = totalupdate
stopLoop()
}
let text = newText
self.text = text
}
func updateNewinfo() -> String {
///当前时间/总共所需要时间,来判断应该尽到哪里(肯定不会大于1)
let timebi:Float = Float(progress)/Float(totalupdate)
let updateVal = startValue + (timebi * (self.endValue - self.startValue))
if type == ZJLAnimationType.FLOAT {
return String(format: "%.2f",updateVal)
}
return String(format: "%.0f",updateVal)
}
func countFrom(start:Float,to:Float,duration:NSTimeInterval) {
///将计时器销毁再重新生成
if timer != nil {
timer.invalidate()
timer = nil
}
initCadisplayLink()
///记录时间戳
lastupdate = NSDate.timeIntervalSinceReferenceDate()
///耗时时间戳
totalupdate = duration
///将其赋值
startValue = start
endValue = to
}
///销毁计时器
func stopLoop() {
timer.invalidate()
timer = nil
}
}
enum ZJLAnimationType {
case INT
case FLOAT
}
Swift UILabel 数字动画效果相关推荐
- 【SwiftUI模块】0018、SwiftUI搭建一个类似支付宝中的余额宝余额数字动画效果
SwiftUI模块系列 - 已更新18篇 SwiftUI项目 - 已更新1个项目 往期Demo源码下载 技术:SwiftUI.SwiftUI3.0.支付宝.余额宝.数字动画 运行环境: SwiftUI ...
- html数字动画效果,原生JavaScript代码实现数字更新的动画效果
前言 在很多数据统计类型网站的首页,经常会看到数据在动态的更新,而且会以动画的效果呈现. 今天这篇文章我们就来看看这个效果如何实现吧. 文中的代码已经放到github上了,感兴趣的同学可以自取.htt ...
- Flutter AnimatedSwitcher 实现的滑动切换数字动画效果
优美的应用体验 来自于细节的处理,更源自于码农的自我要求与努力,当然也需要码农年轻灵活的思维,不局限于思维,不局限语言限制,才是编程的最高境界. 本文章实现的效果如下图所示: 在这里定义一个Timer ...
- html数字动画效果,数字滚动动画效果
最近弄智库,看见百度文库有个文档数的数字在页面加载完后会有个小动画,数字一直向上刷,给人的感觉是文档数量一直在不断的增加.看了下实现效果,自己模拟了下,还挺不错的,效果如下: 智库已有文档 , 份 说 ...
- js滚动数字动画效果
代码复制,直接调用就好了. 需注意!由于js不能精确到小数点后的0,(9.90)在JS中为9.9,所以不能用在有小数点的场景下,只能用在整数的情况下 /*** 滚动数字* @param {*DOM} ...
- jquery数字动画插件jquery.animateNumber.js
jq数字动画插件-jquery.animateNumber.js,可以实现数字的动画显示效果,比如从1跑到36500,从1%跑到100%类似这样的效果,数字动画效果控制多样,非常不错. jquery. ...
- UICountingLabel实现数字变化的动画效果-b
在大多数金融类 app 上或者其他 app 需要数字展示的地方, 经常会有如下的动画效果: 动画效果 怎么做呢? 一.下载UICountingLabel 下载地址: https://github.co ...
- 高逼格UILabel的闪烁动画效果
高逼格UILabel的闪烁动画效果 最终效果图如下: 源码: YXLabel.h 与 YXLabel.m // // YXLabel.h // // Created by YouXianMing o ...
- qt同时两个动画执行_Qt实现数字滚动动画效果
自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html Qt实现数字滚动动画效果 3. ...
最新文章
- java 最近将工作中用到的工具总结——日期工具
- java小编程----str中没有内容
- 《leetcode》single-number
- java 搭建企业应用框架_java培训一般要学多久
- 安装MyEclipse得心得
- 使用函数统计指定c语言,浙大版《C语言程序设计(第3版)》题目集 习题5-5 使用函数统计指定数字的个数...
- 4 月 10 截止 | 南开大学百名青年学科带头人孙宝发课题组招生
- textaligncenter仍然不居中_三星Galaxy S21/S21+保护膜曝光:居中挖孔 回归直屏_手机行情...
- 以太网抓包数据报头长度
- Node.js详细安装教程(2021)
- 使用ViewPager和PhotoView实现图片浏览
- diskpart命令
- Scholar ID
- csu1671 经营小卖部(DP 完全背包 好题)
- 区块链报告会心得体会3000_学习区块链的心得体会?
- 第4届华为编程大赛决赛试题解答(棋盘覆盖)
- Mongodb stop: Unknown instance报错
- php 小程序即时聊天,网易云IM小程序聊天室集成。PHP版SDK API使用示例
- 机器学习9 -- 模型压缩和加速
- 2022百度收录批量自动推送助手
热门文章
- MATLAB绘制长方体
- Auto.js网盘下载加打包插件
- Python 猜100以内数字
- 闪击6偏大偏小?_WEN开箱 | 开箱李宁闪击5季后赛版探讨对比普通版和闪击3怎么选...
- 知乎高赞:拼多多和国家电网,选哪个?
- js 和php 互操cookie 作用域
- 【ECCV 2020】Joint Visual and Temporal Consistency for Unsupervised Domain Adaptive Person Re-ID
- 人物-商界-杨惠妍:杨惠妍
- 服装设计_服装设计网_服装设计图_服装款式图-POP服饰流行前线
- ATTCK框架以及使用场景