昨天去面试 面试官问我 如何实现 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 数字动画效果相关推荐

  1. 【SwiftUI模块】0018、SwiftUI搭建一个类似支付宝中的余额宝余额数字动画效果

    SwiftUI模块系列 - 已更新18篇 SwiftUI项目 - 已更新1个项目 往期Demo源码下载 技术:SwiftUI.SwiftUI3.0.支付宝.余额宝.数字动画 运行环境: SwiftUI ...

  2. html数字动画效果,原生JavaScript代码实现数字更新的动画效果

    前言 在很多数据统计类型网站的首页,经常会看到数据在动态的更新,而且会以动画的效果呈现. 今天这篇文章我们就来看看这个效果如何实现吧. 文中的代码已经放到github上了,感兴趣的同学可以自取.htt ...

  3. Flutter AnimatedSwitcher 实现的滑动切换数字动画效果

    优美的应用体验 来自于细节的处理,更源自于码农的自我要求与努力,当然也需要码农年轻灵活的思维,不局限于思维,不局限语言限制,才是编程的最高境界. 本文章实现的效果如下图所示: 在这里定义一个Timer ...

  4. html数字动画效果,数字滚动动画效果

    最近弄智库,看见百度文库有个文档数的数字在页面加载完后会有个小动画,数字一直向上刷,给人的感觉是文档数量一直在不断的增加.看了下实现效果,自己模拟了下,还挺不错的,效果如下: 智库已有文档 , 份 说 ...

  5. js滚动数字动画效果

    代码复制,直接调用就好了. 需注意!由于js不能精确到小数点后的0,(9.90)在JS中为9.9,所以不能用在有小数点的场景下,只能用在整数的情况下 /*** 滚动数字* @param {*DOM} ...

  6. jquery数字动画插件jquery.animateNumber.js

    jq数字动画插件-jquery.animateNumber.js,可以实现数字的动画显示效果,比如从1跑到36500,从1%跑到100%类似这样的效果,数字动画效果控制多样,非常不错. jquery. ...

  7. UICountingLabel实现数字变化的动画效果-b

    在大多数金融类 app 上或者其他 app 需要数字展示的地方, 经常会有如下的动画效果: 动画效果 怎么做呢? 一.下载UICountingLabel 下载地址: https://github.co ...

  8. 高逼格UILabel的闪烁动画效果

    高逼格UILabel的闪烁动画效果 最终效果图如下: 源码: YXLabel.h 与  YXLabel.m // // YXLabel.h // // Created by YouXianMing o ...

  9. qt同时两个动画执行_Qt实现数字滚动动画效果

    自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取: https://www.cnblogs.com/bclshuai/p/11380657.html Qt实现数字滚动动画效果 3. ...

最新文章

  1. java 最近将工作中用到的工具总结——日期工具
  2. java小编程----str中没有内容
  3. 《leetcode》single-number
  4. java 搭建企业应用框架_java培训一般要学多久
  5. 安装MyEclipse得心得
  6. 使用函数统计指定c语言,浙大版《C语言程序设计(第3版)》题目集 习题5-5 使用函数统计指定数字的个数...
  7. 4 月 10 截止 | 南开大学百名青年学科带头人孙宝发课题组招生
  8. textaligncenter仍然不居中_三星Galaxy S21/S21+保护膜曝光:居中挖孔 回归直屏_手机行情...
  9. 以太网抓包数据报头长度
  10. Node.js详细安装教程(2021)
  11. 使用ViewPager和PhotoView实现图片浏览
  12. diskpart命令
  13. Scholar ID
  14. csu1671 经营小卖部(DP 完全背包 好题)
  15. 区块链报告会心得体会3000_学习区块链的心得体会?
  16. 第4届华为编程大赛决赛试题解答(棋盘覆盖)
  17. Mongodb stop: Unknown instance报错
  18. php 小程序即时聊天,网易云IM小程序聊天室集成。PHP版SDK API使用示例
  19. 机器学习9 -- 模型压缩和加速
  20. 2022百度收录批量自动推送助手

热门文章

  1. MATLAB绘制长方体
  2. Auto.js网盘下载加打包插件
  3. Python 猜100以内数字
  4. 闪击6偏大偏小?_WEN开箱 | 开箱李宁闪击5季后赛版探讨对比普通版和闪击3怎么选...
  5. 知乎高赞:拼多多和国家电网,选哪个?
  6. js 和php 互操cookie 作用域
  7. 【ECCV 2020】Joint Visual and Temporal Consistency for Unsupervised Domain Adaptive Person Re-ID
  8. 人物-商界-杨惠妍:杨惠妍
  9. 服装设计_服装设计网_服装设计图_服装款式图-POP服饰流行前线
  10. ATTCK框架以及使用场景