之前经常会用UIProgress的控件,但是有时候有的地方会要求你上面有个显示比例的地方,所以为了方便以后用到就自己封装了一个小的demo!(https://img-blog.csdn.net/20160412110730682)
你只需在ViewController中写下如下简单代码便可实现
var progress:ProVSpre
progress = ProVSpre(frame: CGRect(x: 0,y: 100,width: self.view.frame.size.width,height: 15))
self.view.addSubview(progress)
progress.linewidth = 4
progress.trackColor = UIColor.magentaColor()
progress.precent = 0.5
progress.backColor = UIColor.greenColor()

当然还有好多属性你也可以自己定义根据你的需求
如下是所有属性
class ProVSpre: UIView{

var widthLabel:Float = 60.0
//线的宽度
var linewidth:CGFloat = 5
// 跟踪的那个线的颜色
var trackColor:UIColor = UIColor.redColor()
//剩下的后背景的颜色
var backColor:UIColor = UIColor.whiteColor()
// 所增长的百分比例
var precent:Float = 0
// 划线的层
var drawlayer:CAShapeLayer!// 显示比例的label的控件
var presentlabel:UILabel!
// 设置label的背景颜色
var titleBackColor:UIColor = UIColor.whiteColor()
// border的颜色
var borderColor :UIColor = UIColor.blueColor()
// 字体的颜色
var fontColor:UIColor = UIColor.blackColor()
// 字体大小
var fontSize:Float = 12.0
}
  //
//  proVSpre.swift
//  滑条百分比例
//
//  Created by Aimee on 4/11/16.
//  Copyright © 2016 Aimee. All rights reserved.
//import UIKitclass ProVSpre: UIView {var widthLabel:Float = 60.0//线的宽度var linewidth:CGFloat = 5// 跟踪的那个线的颜色var trackColor:UIColor = UIColor.redColor()//剩下的后背景的颜色var backColor:UIColor = UIColor.whiteColor()// 所增长的百分比例var precent:Float = 0// 划线的层var drawlayer:CAShapeLayer!// 显示比例的label的控件var presentlabel:UILabel!// 设置label的背景颜色var titleBackColor:UIColor = UIColor.whiteColor()// border的颜色var borderColor :UIColor = UIColor.blueColor()// 字体的颜色var fontColor:UIColor = UIColor.blackColor()// 字体大小var fontSize:Float = 12.0override init(frame: CGRect) {precent = 0presentlabel = UILabel()super.init(frame: frame)}required init?(coder aDecoder: NSCoder) {fatalError("init(coder:) has not been implemented")}override func layoutSubviews() {var textnum = precent * 100.0// 拼接字符串presentlabel.text = String(format: "%.2f%%", textnum)let total:Float = Float(self.frame.size.width) - widthLabel//设置CSAShapelayer来进行设置划线的操作let path = UIBezierPath()path.moveToPoint(CGPoint(x: 0, y: linewidth/2))path.addLineToPoint(CGPoint(x: Int(self.frame.size.width), y: Int(linewidth/2)))drawlayer = CAShapeLayer()drawlayer.frame = CGRect(x: 0, y: self.frame.size.height/2-linewidth/2, width: self.frame.size.width, height: linewidth)drawlayer.path = path.CGPathdrawlayer.lineWidth = linewidthdrawlayer.strokeStart = 0drawlayer.strokeColor = trackColor.CGColordrawlayer.strokeEnd = 0drawlayer.fillColor = UIColor.blackColor().CGColordrawlayer.backgroundColor = backColor.CGColorself.layer.addSublayer(drawlayer)// 给划线layer添加的动画效果,其中的时间duration和下面的label的动画时间是一样的为了她们的运动的同时性let baseanimate = CABasicAnimation(keyPath: "strokeEnd")baseanimate.fromValue = NSNumber(float: 0)baseanimate.toValue = NSNumber(float: precent)baseanimate.fillMode = kCAFillModeForwardsbaseanimate.removedOnCompletion = falsebaseanimate.duration = CFTimeInterval(precent)drawlayer.addAnimation(baseanimate, forKey: nil)// 设置label 的一些属性if self.frame.size.height > 40 {presentlabel.frame = CGRect(x: 0, y: self.frame.size.height/2 - CGFloat(widthLabel/2), width: CGFloat(widthLabel), height: 40)}else{presentlabel.frame = CGRect(x: 0, y: 0, width: CGFloat(widthLabel), height: self.frame.size.height)}presentlabel.font = UIFont.systemFontOfSize(CGFloat(fontSize))presentlabel.textColor = fontColorpresentlabel.textAlignment = .Centerpresentlabel.layer.cornerRadius = presentlabel.frame.size.height/2;presentlabel.layer.masksToBounds = truepresentlabel.layer.borderColor = borderColor.CGColorpresentlabel.layer.borderWidth = 2presentlabel.backgroundColor = titleBackColorself.addSubview(presentlabel)// label跟随动的动画效果UIView.animateWithDuration(CFTimeInterval(precent), delay: 0, options: [], animations: {self.presentlabel.center.x = CGFloat(self.widthLabel/2 + total * self.precent)}, completion: nil)}//    // Only override drawRect: if you perform custom drawing.
//    // An empty implementation adversely affects performance during animation.
//    override func drawRect(rect: CGRect) {
//        // Drawing code
//    }}

自定义滑条封装含有百分比例显示(swift版)相关推荐

  1. iOS多线程——Operation(自定义并发与非并发Operation)(Swift版)

    目录 1. 前言 2. 主要属性及方法 3. Operation Dependencies(依赖) 4. 同步或异步方式 5. 并发与非并发 5.1 非并发Operation 5.2 并发Operat ...

  2. 一个常用的自定义弹框封装(适配 AndroidX),加载 ProgressDialog,状态显示的 StatusDialog 和自定义 Toast,全部支持背景颜色,圆角,边框和文字的自定义,构建者模

    MNProgressHUD 项目地址:maning0303/MNProgressHUD  简介: 一个常用的自定义弹框封装(适配 AndroidX),加载 ProgressDialog,状态显示的 S ...

  3. 让自定义view宽高成比例显示

    有时候我们自定义一个View,比如ImageView,我们需要让它宽高按照一定的比例显示,例如在ImageView在GridView中显示,GridView设置了3列,由于ImageVIew的宽度会根 ...

  4. Vue学习笔记:Vue中封装自定义步骤条 实现上下一步

    Vue中封装自定义步骤条 实现上下一步 效果图: 如上图:在VUE中实现效果,VUE+Element,ant都有封装好的UI,直接引用就好了: 这里,觉得样式不符合UI设计,所以自定义封装了一个步骤条 ...

  5. iOS swift5 UISlider 自定义UISlider 修改滑块和滑条的大小

    文章目录 UISlider添加事件,点击事件,滑动事件 1.滑动事件:滑动过程中一直触发的事件 2.点击事件:滑动完成,放开手才触发的事件 自定义UISlider 修改滑块和滑条的大小 UISlide ...

  6. Android进度条,自定义进度条,显示百分比

    昨天搞了一个圆形加载框 传送门,睡了一晚重温一下,今天搞一个条形加载框巩固一下,比圆形要简单点,两个矩形即可,一个总的,一个加载进度的,然后添加一个文字在后面,先上图,后上代码,讲解在注释里直观又方便 ...

  7. android自定义进度条_Android中的自定义进度栏

    android自定义进度条 Custom progress bar in android application gives it a personal touch. In this tutorial ...

  8. android进度条脚本,GEE引擎自定义进度条和自定义属性示例脚本..

    GEE引擎自定义进度条和自定义属性示例脚本.. [@main] #SAY \\ 自定义装备进度条 \\ 自定义装备属性 \\ ;==================================== ...

  9. Android自定义控件:imageview重写onMeasure方法实现图片按指定比例显示,拉伸永不变形,解决屏幕适配问题

    使用ImageView会遇到的问题 在Android应用中,都少不了图片的显示,ImageView,轮播图,ViewPager等等,很多都是来显示图片的,比如一个广告条的轮播效果,参看博客:广告条效果 ...

最新文章

  1. Activity在有Dialog时按Home键的生命周期
  2. 前方高能!AI 大牛 LeCun 设想下一个新前沿:摈弃深度学习的所有概率技巧,改而掌握不断转变的能量值...
  3. bootstrap4导航栏点击弹出表单_Bootstrap4从入门到精通
  4. Mysql错误: Lock wait timeout exceeded 解决办法
  5. Boost:双图bimap与Boost类型的测试程序
  6. OceanBase首次阐述战略:继续坚持自研开放之路 开源300万行核心代码
  7. word标题大纲级别_快速按标题层级把Word转Excel—附详细操作步骤
  8. 图解CentOS系统启动流程
  9. Android开发人员的10大抱怨
  10. phtread条件变量pthread_cond_t初始化方式
  11. webstorm怎样查找历史记录
  12. 数据分析sql面试必会6题经典_经典SQL面试题及答案分析
  13. 每日工作记录——任意小数分频研究
  14. MySQL从字符串提取数字
  15. 为了讨好大舅子,程序员竟当场学起了外挂???
  16. NHibernate 联合查询,解决方法-通过自动转换成DataTable
  17. java-net-php-python-jspm智守护学生健康管理系统软件设计与开发计算机毕业设计程序
  18. 层次分析法 你真的懂了吗?(完更)
  19. coreldraw插件编写
  20. 武汉大学计算机专业网络安全,武汉大学网络空间安全考研科目有哪些?

热门文章

  1. 《微积分:一元函数微分学》——罗尔定理
  2. 少年, 我看你骨骼惊奇, 送你一套精选 Java 面试题
  3. 电线电缆常用导电材料
  4. SwiftUI是什么,听听大牛们如何说
  5. Java-List数组排序的使用—Collections.sort()
  6. 福建计算机信息技术大学排名,2017福建所有的大学以及排名情况
  7. Android 应用强制更新策略
  8. SqlServer复习
  9. htmlmeta标签详细分析
  10. Oracle12C SGA PGA UGA