自定义滑条封装含有百分比例显示(swift版)
来源:互联网 发布:画坐标图软件 编辑:程序博客网 时间:2024/06/17 21:53
之前经常会用UIProgress的控件,但是有时候有的地方会要求你上面有个显示比例的地方,所以为了方便以后用到就自己封装了一个小的demo!(http://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.0 override init(frame: CGRect) { precent = 0 presentlabel = 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.CGPath drawlayer.lineWidth = linewidth drawlayer.strokeStart = 0 drawlayer.strokeColor = trackColor.CGColor drawlayer.strokeEnd = 0 drawlayer.fillColor = UIColor.blackColor().CGColor drawlayer.backgroundColor = backColor.CGColor self.layer.addSublayer(drawlayer) // 给划线layer添加的动画效果,其中的时间duration和下面的label的动画时间是一样的为了她们的运动的同时性 let baseanimate = CABasicAnimation(keyPath: "strokeEnd") baseanimate.fromValue = NSNumber(float: 0) baseanimate.toValue = NSNumber(float: precent) baseanimate.fillMode = kCAFillModeForwards baseanimate.removedOnCompletion = false baseanimate.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 = fontColor presentlabel.textAlignment = .Center presentlabel.layer.cornerRadius = presentlabel.frame.size.height/2; presentlabel.layer.masksToBounds = true presentlabel.layer.borderColor = borderColor.CGColor presentlabel.layer.borderWidth = 2 presentlabel.backgroundColor = titleBackColor self.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// }}
0 0
- 自定义滑条封装含有百分比例显示(swift版)
- Android 自定义圆圈进度并显示百分比例控件(纯代码实现)
- 234_自定义一个百分比例的环形饼状图
- 自定义圆环百分占比view (label文字支持自动换行 和设置显示行数)
- Swift 自定义转场动画 (没有封装)
- 封装自定义滚动条
- 自定义控件【按照宽高比例显示】
- 自定义控件:等比例显示控件RatioLayout
- 百分位数(Percentile)
- Swift - 自定义tabbar的封装
- 自定义 动态显示图片留白比例插件
- 自定义View,按照百分比画圆
- 如何一直显示tableview的滚动条(自定义方法)
- 读取条空比例
- Swift - 实现日志输出的封装1(显示出调用的文件名、方法、行号)
- Swift自定义UICollectionViewCell不显示的解决方案
- iOS swift 自定义tableView不显示cell
- UI控件笔记(十四):UI之自定义导航条的封装
- Trie树:应用于统计和排序
- logback logback.xml常用配置详解(一)<configuration> and <logger>
- Android调用摄像头
- Openstack学习笔记(九)-nova学习笔记(一)
- myeclipse9.0安装svn插件
- 自定义滑条封装含有百分比例显示(swift版)
- DNS协议详解
- 关于pylab的安装与使用等相关问题
- [IOS经验总结]UIWebView与JS之间的数据交互
- 瞬间抓住眼球!24个特色人像背景的全屏网站设计
- Android开发之Android自带的下拉刷新控件SwipeRefreshLayout
- linux iconv字符编码批处理方式转换
- Android TextWatcher
- Android 开发 之 JNI入门 - NDK从入门到精通