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

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

内容简介:将项目链接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)
        }
    }

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

查看所有标签

猜你喜欢:

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

从零开始做运营

从零开始做运营

张亮 / 中信出版社 / 2015-11-1 / 49.00元

运营是什么?怎样做运营?产品和运营是什么关系?我是否适合从事互联网运营?为什么我做的运营活动收效甚微? 在互联网大热的今天,互联网运营成为一个越来越重要的岗位,事关网站、产品的发展与存亡。很多年轻人带着对互联网的热情投身到这个行业,却发现自己对这个行业所知甚少,对互联网运营更加陌生,甚至有一些有志于从事互联网运营的人,因为对运营缺乏了解而难以确定自己的职业发展方向。本书的出发点就在于此,它将......一起来看看 《从零开始做运营》 这本书的介绍吧!

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

RGB HEX 互转工具

SHA 加密
SHA 加密

SHA 加密工具