新建一个继承UIView类的文件progresscontrol
在这个progresscontrol文件中写入
private var _progressValue:CGFloat = 0
internal func getProgressValue()->CGFloat{
return _progressValue
} //在外界获取它的值
internal func setProgressValue(value:CGFloat){
_progressValue = value
setNeedsDisplay() //重绘
} //在外界修改它的值
drawRect中的代码如下
override func drawRect(rect: CGRect) {
// Drawing code
var ctx = UIGraphicsGetCurrentContext()
//正方形的控件Rect
var r = rect.width/2 //坐标中心点
//绘制背景颜色=================
CGContextAddArc(ctx, r, r, r, 0, 3.1415926*2, 0)
CGContextSetRGBFillColor(ctx, 0.7, 0.7, 0.7, 1)
CGContextFillPath(ctx)
//===========================
//绘制扇形==============
CGContextAddArc(ctx, r, r, r, 0, 3.1415926*2*_progressValue, 0)//弧形
CGContextAddLineToPoint(ctx, r, r)//连线到中心点r,r
CGContextSetRGBFillColor(ctx, 0, 1, 0, 1) //填充色
CGContextFillPath(ctx)//填充
//===========================
}
在故事版中添加一个按钮控件,按住control拖入viewcontroller文件中选择IBAction
private var pc : progresscontrol! //全局定义pc,为progresscontrol类型
//动态设置 每点击一次就加0.1
@IBAction func addprogress(sender: AnyObject) {
pc.setProgressValue(pc.getProgressValue()+0.1)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
pc = progresscontrol(frame:CGRect(x: 100, y: 100, width: 100, height: 100))
// pc.setProgressValue(0.2)//设置值
self.view.addSubview(pc) //添加到画面中
}
运行之后是一个黑色的背景,接着回到progresscontrol文件中
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = UIColor(white: 1, alpha: 0) //设置背景为白色全透明
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
把背景设置为白色全透明的,就完成了。