自定义条形进度条(iOS)

ViewController.m文件

#import "ViewController.h"
@interface ViewController ()
@property(strong,nonatomic)UIButton *btnBegin;
@property(strong,nonatomic)UIButton *btnStop;
@property(strong,nonatomic)UIButton *btnResert;
@property(strong,nonatomic)UITextField *shangx;
@property(strong,nonatomic)UIproessMy *proess;
@end
@implementation ViewController - (void)viewDidLoad { self.proess=[[UIproessMy alloc]initWithFrame:CGRectMake(, , , )];
self.proess.backgroundColor=[UIColor clearColor];
[self.view addSubview:self.proess];
//设置值 百分比
self.proess.index=;
[self setBtn];
}
//生成按钮
-(void)setBtn{ self.btnBegin=[[UIButton alloc]initWithFrame:CGRectMake(, , , )];
self.btnBegin.backgroundColor=[UIColor colorWithRed:0.294 green:1.000 blue:0.368 alpha:1.000];
self.btnBegin.layer.cornerRadius=;
self.btnBegin.layer.masksToBounds=YES;
[self.btnBegin setTitle:@"开始" forState:UIControlStateNormal];
[self.btnBegin addTarget:self action:@selector(chang) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.btnBegin]; self.btnStop=[[UIButton alloc]initWithFrame:CGRectMake(, , , )];
self.btnStop.backgroundColor=[UIColor colorWithRed:0.294 green:1.000 blue:0.368 alpha:1.000];
self.btnStop.layer.cornerRadius=;
self.btnStop.layer.masksToBounds=YES;
[self.btnStop setTitle:@"停止" forState:UIControlStateNormal];
[self.btnStop addTarget:self action:@selector(stopBtn) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.btnStop]; self.btnResert=[[UIButton alloc]initWithFrame:CGRectMake(, , , )];
self.btnResert.backgroundColor=[UIColor colorWithRed:0.294 green:1.000 blue:0.368 alpha:1.000];
self.btnResert.layer.cornerRadius=;
self.btnResert.layer.masksToBounds=YES;
[self.btnResert setTitle:@"重置" forState:UIControlStateNormal];
[self.btnResert addTarget:self action:@selector(Resert) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.btnResert]; }
//停止
-(void)stopBtn{
[self.proess stop];
}
//开始
-(void)chang{
[self.proess begin];
}
//重置
-(void)Resert{
[self.proess resert];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning]; } @end

自定义类

UIproessMy.h

#import <UIKit/UIKit.h>

@interface UIproessMy : UIView
@property(strong,nonatomic)UIView *aView;
@property(strong,nonatomic)UIView *UIProess;
@property(strong,nonatomic)UILabel *label;
@property(strong,nonatomic)NSTimer *time;
@property(assign,nonatomic)float index;
-(void)change;
-(void)begin;
-(void)stop;
-(void)resert;
@end

UIproessMy.m文件

#import "UIproessMy.h"

@implementation UIproessMy
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
//初始化
self.aView=[[UIView alloc]initWithFrame:CGRectMake(, , , )];
self.aView.backgroundColor=[UIColor colorWithRed:0.841 green:0.848 blue:0.773 alpha:1.000];
self.UIProess=[[UIView alloc]initWithFrame:CGRectMake(, ,, )];
self.aView.layer.cornerRadius=;
self.aView.layer.masksToBounds=YES;
self.UIProess.layer.cornerRadius=;
self.UIProess.layer.masksToBounds=YES;
self.UIProess.backgroundColor=[UIColor colorWithRed:0.327 green:0.816 blue:0.075 alpha:1.000]; self.label=[[UILabel alloc]initWithFrame:CGRectMake(, , , )];
self.label.backgroundColor=[UIColor colorWithRed:0.457 green:0.889 blue:1.000 alpha:1.000];
self.label.layer.cornerRadius=;
self.label.layer.masksToBounds=YES;
self.label.textAlignment=NSTextAlignmentCenter;
self.label.font=[UIFont boldSystemFontOfSize:];
self.label.text=[NSString stringWithFormat:@"0%%"];
[self.aView addSubview:self.UIProess];
[self addSubview:self.aView];
[self addSubview:self.label]; }
return self;
}
//开始
-(void)begin{
if (self.UIProess.frame.size.width<*(self.index)*0.01) {
self.time=[NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(change) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:self.time forMode:NSDefaultRunLoopMode];
}else{
[self.time invalidate];
} }
//重置
-(void)resert{
[self initWithFrame:CGRectMake(, , , )];
self.label.text=[NSString stringWithFormat:@"0%%"];
[self.time setFireDate:[NSDate distantFuture]]; }
//停止
-(void)stop{
int a=;
if (a==) {
[self.time setFireDate:[NSDate distantFuture]];
a=;
}else{
[self.time setFireDate:[NSDate date]];
a=;
}
}
//变化 调用定时器 -(void)change{
CGRect changeFrame=self.UIProess.frame;
changeFrame.size.width+=0.25;
self.UIProess.frame=changeFrame;
if (self.UIProess.frame.size.width>=*(self.index)*0.01) {
[self.time invalidate];
// [self initWithFrame:self.UIProess.frame];
}
self.label.text=[NSString stringWithFormat:@"%.1f%%",self.UIProess.frame.size.width/*];
}
@end

效果

iOS 自定义进度条的更多相关文章

  1. android 自定义进度条颜色

    android 自定义进度条颜色 先看图 基于产品经理各种自定义需求,经过查阅了解,下面是自己对Android自定义进度条的学习过程!   这个没法了只能看源码了,还好下载了源码, sources\b ...

  2. Qt之模型/视图(自定义进度条)

    简述 在之前的章节中分享过关于QHeaderView表头排序.添加复选框等内容,相信大家模型/视图.自定义风格有了一定的了解,下面我们来分享一个更常用的内容-自定义进度条. 实现方式: 从QAbstr ...

  3. android113 自定义进度条

    MainActivity: package com.itheima.monitor; import android.os.Bundle; import android.app.Activity; im ...

  4. 自定义进度条PictureProgressBar——从开发到开源发布全过程

    自定义进度条PictureProgressBar——从开发到开源发布全过程 出处: 炎之铠邮箱:yanzhikai_yjk@qq.com 本文原创,转载请注明本出处! 本项目JCenter地址:htt ...

  5. C# 根据BackgroundWoker异步模型和ProgressBar控件,自定义进度条控件

    前言 程序开发过程中,难免会有的业务逻辑,或者算法之类产生让人能够感知的耗时操作,例如循环中对复杂逻辑处理;获取数据库百万乃至千万级数据;http请求的时候等...... 用户在使用UI操作并不知道程 ...

  6. BitBlt()函数实现带数字百分比进度条控件、静态文本(STATIC)控件实现的位图进度条、自定义进度条控件实现七彩虹颜色带数字百分比

    Windows API BitBlt()函数实现带数字百分比进度条控件. 有两个例子:一用定时器实现,二用多线程实现. 带有详细注解. 此例是本人原创,绝对是网上稀缺资源(本源码用Windows AP ...

  7. [iOS]圆形进度条及计时功能

    平时用战网安全令的时候很喜欢圆形倒计时的效果,然后简单看了一下Android的圆形进度条,后来又写了一个IOS的.整体界面参照IOS系统的倒计时功能,顺便熟悉了UIPickerView的一些特性的实现 ...

  8. 最简单的android自定义进度条样式

    一.自定义圆形进度条样式 1.在安卓项目drawable目录下新建一个xml文件如下:<?xml version="1.0" encoding="utf-8&quo ...

  9. Android_自定义进度条

    转载:http://blog.csdn.net/lmj623565791/article/details/43371299 ,本文出自:[张鸿洋的博客] 1.概述 最近需要用进度条,秉着不重复造轮子的 ...

随机推荐

  1. Unity 摄像机Clear Flags和Culling Mask属性用途详解

    原文地址:http://blog.csdn.net/tanmengwen/article/details/8798231 1.简述两个属性 1.1 Clear Flags 清除标记 每个相机在渲染时会 ...

  2. Visual Studio 2013 Preview对C++11的支持

    为期3天的微软Build 2013大会结束了,作为微软一年一度的开发者大会,微软也做足了功夫:很多产品(包括Windows 8.1和Visual Studio 2013 Preview)发布,chan ...

  3. Tips2:无需Gizmo函数 和 附加Render 实现空物体(GameObject)的可视化

    Unity在场景创建过程中,可能会用到很多空物体,如生成器(Spawn)什么的,一般空物体默认是看不到的,其实,空物体可以通过设置为可见的,这样在用到空物体时就能更加方便的编辑和控制了. 1.可以是这 ...

  4. ChartDirector应用笔记(三)

    前言 继上篇文章(Simple bar chart)推出之后,本篇文章继续ChartDirector的使用.在这篇Blog中,博主实现的是soft lighting bar.soft lighting ...

  5. Web开发常用知识点 - PHP

    Ubuntu下面,如何用PHP代码获得系统的临时文件夹 用PHP方法 sys_get_temp_dir() 来取得系统的临时文件夹路径,比如Ubuntu下面,返回值为"/tmp".

  6. 使用BOM 的window对象属性打开新窗口

    ★  示例1 要求:弹出新窗口,并向新窗口写入动态HTML代码 代码 <buttononclick="btnOpen()">打开新窗口</button> & ...

  7. 【原创】本地通过IIS设置开发的localhost网站的域名改为个性域名方法

    效果图:   操作步骤如下:  第一步: 在本地IIS上新建个网站,如下图所示      第二步,修改host文件       加配置节点如下图所示       第三步,在vs里面找到你的web项目, ...

  8. Python入门笔记(12):表达式和语句

    一.Python语句 if语句.else语句.elif语句.条件表达式.while语句.for语句.break语句.continue语句.pass语句.Iterators(迭代器).列表解析 二.常用 ...

  9. SVG操作插件:SVG.JS 个人提取部分实用中文文档

    先贴出github地址:https://github.com/svgdotjs/svg.js(也就是原文档的说明和文件的下载地址) 创建SVG文档 var draw = SVG('drawing'). ...

  10. C#怎样处理xml文件的大于号和小于号等常用符号(xml符号引发的程序错误)

    在程序中由xml配置而成的sql语句要转换为C#支持的sql语句 <settings> <select> a.*</select> <from> (se ...