Swift 定义一个渐变进度条,在项目中的实际应用

栏目: Objective-C · 发布时间: 5年前

内容简介:将项目链接demo里,进度条代码拖 PopProgressBar.swift 这个文件按照在ViewController里的使用即可[从gif图可以看出该控件由1.半透明的黑底PopProgressBar,2.进度条progressView。3.移动的提示hintBtn

当然这是自定义弹框ZHFToolBox的很小一部分:渐变进度条。

将项目链接demo里,进度条代码拖 PopProgressBar.swift 这个文件按照在ViewController里的使用即可

先放上链接地址:

[ https://github.com/FighterLightning/ZHFToolBox.git]

再来看效果图:

Swift 定义一个渐变进度条,在项目中的实际应用

2.gif

这是为自定义弹框添加的一个渐变进度条。

自定义这个进度条的思路:

一、结构分析

从gif图可以看出该控件由1.半透明的黑底PopProgressBar,2.进度条progressView。3.移动的提示hintBtn

 //自定义一个继承UIView 的PopProgressBar视图
  class PopProgressBar: UIView
   //背景区域的颜色和透明度
    var backgroundColor1:UIColor  = UIColor.init(red: 0, green: 0, blue: 0, alpha: 0.4)
    //进度条view
    var progressView: UIView =  UIView()
    //提示按钮
    var hintBtn: UIButton!
   var beforeValue :CGFloat = 0 //前一个值
    var displayLink: CADisplayLink! //定时器 承接控制器里的定时器,删除view时保证定时器关闭
    var path: UIBezierPath!
    var progressLayer :CAShapeLayer!

二、构建PopProgressBar视图初始化代码及相关代码

//初始化视图
    func initPopBackGroundView() -> PopProgressBar{
}
//弹出View
    func addAnimate(view:PopProgressBar) {
}
//添加进度条
    func addProgressView() {
}
 //为进度条添加遮罩,及layer
    @objc func gradentWith(frame:CGRect) {
}
//当前进度
    func passValue(currentValue: CGFloat,allValue: CGFloat) {
}
//移除或者中断进度
    @objc func tapBtnAndcancelBtnClick() {
}

三、在ViewController里的使用

//1定义一下
    var progressBar: PopProgressBar! //进度条
    var displayLink: CADisplayLink! //定时器
    var currentValue: CGFloat = 0;
//2.在需要加载进度条的方法里实现
//弹出一个模拟渐变进度条
            currentValue = 0
            progressBar = PopProgressBar()
            progressBar.addAnimate(view: progressBar.initPopBackGroundView())
  //定时器模拟实时数据更新
            displayLink = CADisplayLink.init(target: self, selector: #selector(displayLinkRun))
            displayLink.add(to: RunLoop.current, forMode: RunLoop.Mode.defaultRunLoopMode)
            progressBar.displayLink = displayLink
//3.模拟实时数据更新调用
@objc func displayLinkRun(){
        if currentValue > 1 {
            //加载完成 关闭定时器,隐藏进度条
            displayLink.invalidate()
            displayLink = nil
            progressBar.removeFromSuperview()
        }
        else{
           currentValue = currentValue + 0.005;
           progressBar.passValue(currentValue: currentValue, allValue: 1.0)
        }
    }

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Zero to One

Zero to One

Peter Thiel、Blake Masters / Crown Business / 2014-9-16 / USD 27.00

“This book delivers completely new and refreshing ideas on how to create value in the world.” - Mark Zuckerberg, CEO of Facebook “Peter Thiel has built multiple breakthrough companies, and ......一起来看看 《Zero to One》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

html转js在线工具
html转js在线工具

html转js在线工具