自定义控件来创建进度控制条

首先创建一个cocoa class 继承自NSView 不是为view 关连一个文件 是再创建一个文件

在progressControl中 代码是这样的 实现一个progressControl

import UIKit

class progressControl: UIView {

    //自定义一个属性 用来改变填充的值
    private var _progressValue:CGFloat = 0
    //设置和获取 set和get
    public func getProgressValue() ->CGFloat {
        return _progressValue
    }
    public func setProgressValue(value:CGFloat) {
        _progressValue = value
        //要进行重绘 所以要调用这个函数
        setNeedsDisplay()
    }
    // Only override drawRect: if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func drawRect(rect: CGRect) {
        //重绘的代码
        var ctx = UIGraphicsGetCurrentContext()
        //获取到当前的半径
        var r = rect.width / 2
        //绘制背景
        CGContextAddArc(ctx, r, r, 0, 0, 3.1415926 * 2 * _progressValue, 0)
        CGContextSetRGBFillColor(ctx, 0.7, 0.7, 0.7, 1)
        CGContextFillPath(ctx)
        CGContextAddArc(ctx, r, r, r, 0, 3.1415926 * 2 * _progressValue, 1)
        //设置颜色 为蓝色
        CGContextSetRGBFillColor(ctx, 0, 0, 1, 1)
        CGContextFillPath(ctx)
    }
    

}
随后在view controller中实现这个自定义的控件 并进行添加 用progressControll 来进行创建 因为文件名是这个

import UIKit

class ViewController: UIViewController {
    //创建progressControll实例
 
    @IBAction func change(sender: UISlider) {
        pc.setProgressValue(CGFloat(sender.value))
    }
 var pc = progressControl()
      override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    //创建progressControll实例
       pc = progressControl(frame: CGRect(x: 20,y: 20,width: 100,height: 100))
      
        self.view.addSubview(pc)
    
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}
接着拖进一个slider 并连接在view controller中

import UIKit

class ViewController: UIViewController {
    //创建progressControll实例
 
    @IBOutlet var slider: UISlider!
        @IBAction func change(sender: UISlider) {
        pc.setProgressValue(CGFloat(sender.value))
            slider.minimumValue = 0
            slider.maximumValue = 1
    }
 var pc = progressControl()
      override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        slider.minimumValue = 0
        slider.maximumValue = 1
        //创建progressControll实例
       pc = progressControl(frame: CGRect(x: 20,y: 20,width: 100,height: 100))
      
        self.view.addSubview(pc)
    
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}


自定义控件来创建进度控制条_第1张图片

你可能感兴趣的:(自定义控件来创建进度控制条)