• iOS项目开发实战——自己定义圆形进度提示控件


           iOS中默认的进度条是水平方向的进度条,这往往不能满足我们的需求。

    可是我们能够自己定义类似的圆形的进度提示控件,主要使用iOS中的画图机制来实现。

    这里我们要实现一个通过button点击然后圆形进度提示不断添加的效果。

    (1)新建一个Cocoa Touch Class,注意要继承自UIView。

    这个是绘制图形的类。绘制一个圆形的背景和扇形的进度。详细实现例如以下:

    import UIKit
    
    class ProgressControl: UIView {
    
        
        override init(frame: CGRect) {
            super.init(frame: frame)
            
            self.backgroundColor = UIColor(white: 1, alpha: 0)//初始化画图背景为白色;
        }
        
        required init(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
        }
    
        private var _progressValue:CGFloat = 0//这个就是当前的进度;
        
        func getProgressValue()->CGFloat{
        
            return _progressValue
        }
        
        func setProgressvalue(value:CGFloat){//设置进度;
        
            _progressValue = value
            
            setNeedsDisplay()
        }
    
        
        override func drawRect(rect: CGRect) {//绘制圆形背景和扇形进度。
            
            var context = UIGraphicsGetCurrentContext()
            
            var r = rect.width/2
            
            CGContextAddArc(context, r, r, r, 0, 3.1415926 * 2 , 0)
            CGContextSetRGBFillColor(context, 0.5, 0.5, 0.5, 1)
            CGContextFillPath(context)
            
            CGContextAddArc(context, r, r, r, 0, 3.1415926 * 2 * _progressValue, 0)
            CGContextAddLineToPoint(context, r, r)
            CGContextSetRGBFillColor(context, 0, 0, 1, 1)
            CGContextFillPath(context)
            
        }
        
    }
    

    (2)界面中拖入一个button,拖拽Action事件。

    在ViewController中实现例如以下:

    import UIKit
    
    class ViewController: UIViewController {
    
        var progressControl:ProgressControl!
        
        override func viewDidLoad() {
            super.viewDidLoad()
    
            
            progressControl = ProgressControl(frame:CGRect(x: 100, y: 100,  100, height: 100))
            self.view.addSubview(progressControl)
            
        }
        
        //点击button。添加进度
        @IBAction func addProgressValuePressed(sender: UIButton) {
            
            progressControl.setProgressvalue(progressControl.getProgressValue()+0.1)
            
        }
        
        
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
    
    }

    (3)最后的实现效果例如以下:



          对于其它的触发事件,也能够使用这个自己定义圆形进度控件来进行提示。


    github主页:https://github.com/chenyufeng1991  。欢迎大家訪问!

  • 相关阅读:
    HDU 1496 Equations
    HDU 1060 Leftmost Digit
    HDU 1391 Number Steps
    HDU 1212 Big Number
    HDU 1491 Octorber 21st
    HDU 1339 A Simple Task
    HDU 2710 Max Factor
    HDU 1176 免费馅饼
    FORTH基本堆栈操作
    FORTH 安装使用
  • 原文地址:https://www.cnblogs.com/wzzkaifa/p/7268033.html
Copyright © 2020-2023  润新知