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

来源:互联网 发布:新网域名代理平台 编辑:程序博客网 时间:2024/05/06 08:27

新建一个继承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")    }

把背景设置为白色全透明的,就完成了。

0 0
原创粉丝点击