您的位置:首页 > 移动开发 > IOS开发

IOS使用自带的API绘制一个加载进度的圆圈

2015-10-02 13:39 351 查看
新建一个继承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")
}


把背景设置为白色全透明的,就完成了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: