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

iOS中默认的进度条是水平方向的进度条,这往往不能满足我们的需求。但是我们可以自定义类似的圆形的进度提示控件,主要使用iOS中的绘图机制来实现。这里我们要实现一个通过按钮点击然后圆形进度提示不断增加的效果。

(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)界面中拖入一个按钮,拖拽Action事件。在ViewController中实现如下:

import UIKit

class ViewController: UIViewController {

    var progressControl:ProgressControl!

    override func viewDidLoad() {
        super.viewDidLoad()

        progressControl = ProgressControl(frame:CGRect(x: 100, y: 100, width: 100, height: 100))
        self.view.addSubview(progressControl)

    }

    //点击按钮,增加进度
    @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)最后的实现效果如下:

对于其他的触发事件,也可以使用这个自定义圆形进度控件来进行提示。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-03 06:02:27

iOS项目开发实战——自定义圆形进度提示控件的相关文章

iOS项目开发实战——学会使用TableView列表控件(四)plist读取与Section显示

文本将会实现把数据存储到plist文件里.然后在程序中进行读取.在TableView控件中依据不同的类别显示Section. 有关TableView 的其它实现,请參考<iOS项目开发实战--学会使用TableView列表控件(一)><iOS项目开发实战--学会使用TableView列表控件(二)><iOS项目开发实战--学会使用TableView列表控件(三)了解Section>. (1)新建一个Property List文件,这个也就是plist文件.我取名为dat

iOS项目开发实战——自定义设置导航栏和状态栏背景

在iPhone的状态栏顶部,会有很多的信息,如运营商,信号强弱,网络状况,时间,电量等等.我们使用很多的App,如微信,QQ等等,都会发现导航栏的背景或者说图片都是重新设置过的,这样就能增加用户体验,也能更加节省下方的屏幕空间.那如何来设置导航栏的图片呢? (1)首先建立一个iOS项目,语言选择Swift.并且在Images.xcassets中拖入一张图片,大小要自己设置好,用来作为顶部导航栏的背景. (2)在Main.storyboard中选中ViewController,然后选择Editor

iOS开发系列之常用自定义控件开发集—自定义状态栏消息提示控件开发

在实际开发中消息提示时很常见的需求,为了个性化和拥有简洁的UI状态栏提示是比较好的方案,好处很多如:不遮挡主UI,新意,下面贴出实现代码. WHC_StatusBarMessage.h头文件如下: // // WHCStatusBarMessage.m // WHCStatusBarMessage // // Created by apple on 14-3-28. // Copyright (c) 2014年 apple. All rights reserved. // #import "WH

iOS项目开发实战——storyboard设置界面技巧与注意事项

在iOS开发中,使用Main.storyboard来设计界面是每一个iOS开发人员需要面对的问题,使用storyboard相比较Android中使用XML来设置布局,有优点也有缺陷,现在我们来谈谈storyboard的设计技巧. (1)直接使用鼠标右键可以直接缩放storyboard的缩放比例.当然你也可以用触摸板使用2根手指缩放. . (2)拖拽控件绑定到代码中,不一定要从设计界面的控件中进行拖拽,也可以直接从左侧的列表中拖拽,这样会更加清晰方便. . (3)如何添加修改超过一屏的控件.我们把

iOS项目开发实战——配置自定义动画

动画很多的属性,如位置,透明度等,开发者可以根据这些属性来自定义自己需要的动画.现在我们来简单实现如何自定义动画,以视图的透明度的变化为例.其他的动画效果可以参考我的其他两篇博客<iOS项目开发实战--视图动画效果><iOS项目开发实战--实现视图切换动画>. (1)同样也在Images.xcassets中拖入一张图片,然后在 Main.storyboard中使用一个ImageView控件来包含这张图片.并且绑定控件到代码中. (2)然后在ViewController中实现代码如下

聚合数据 iOS 项目开发实战:条码查询器

记录下,聚合数据 iOS 项目开发实战:条码查询器:视频地址:http://www.jikexueyuan.com/course/324.html 条码查询API:https://www.juhe.cn/docs/api/id/52 核心内容: 1.条码查询器结构分析.2.如何将聚合数据 SDK 添加到工程中.3.模型以及业务类的封装.4.控制器间的数据传递.5.tableView 以及 webView 的使用. 具体课时 1.条码查询器界面搭建 12:53 本课时通过分析条码查询的UI结构和业

iOS项目开发实战——获取网页源代码的二进制数据

我在上一篇博客<iOS项目开发实战--iOS网络编程获取网页Html源代码>中讲述了如何获取一个网页的HTML源代码,可以满足一定的需求.但是由于特殊原因,我们想获取的是一个网页的二进制数据,那么应该怎么办呢? 具体实现如下: (1)创建一个iOS项目,Language选择Swift,然后在ViewController.swift 中写入如下代码: override func viewDidLoad() { super.viewDidLoad() var data = NSData(conte

iOS项目开发实战——设置视图的透明度改变动画

在iOS中 ,透明度的改变可以让View视图以一种渐变的效果动态的出现或者消退,非常有意思.这里我们将会对一个View控件的色块执行透明度改变的动画.关于其他的动画效果可以参考我的其他几篇博客<iOS项目开发实战--制作视图的平移动画以及解决移动异常问题>,<iOS项目开发实战--多个视图的平移动画与闭包函数的声明与调用>. (1)在Main.storyboard中拖入一个View,并且绑定到代码中. (2)实现代码如下: import UIKit class OpacityVie

iOS项目开发实战——iOS网络编程获取网页Html源代码

如今我们身处互联网的时代,任何一个软件或是App,都会或多或少与网络打交道,并不断发生数据交互.一个没有涉及网络编程的应用会显得比较low,这里我们将会开始使用Swift开发iOS应用,并且主要来实现网络操作方面的功能. 这里的需求是获取某个网页的Html源代码,即从网上获取数据.具体实现如下: (1)创建一个iOS项目,Language选择Swift.然后在ViewController.swift中实现如下代码: override func viewDidLoad() { super.view