自定义条形进度条(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. 在C函数中保存状态:registry、reference和upvalues

    C函数可以通过堆栈来和Lua交换数据,但有时候C函数需要在函数体的作用域之外保存某些Lua数据,那么我们想到全局变量或static变量,这样做的缺点是:(1)为Lua设计C函数库时,导致不可重入:(2 ...

  2. 【转载】给VM虚拟机增加硬盘容量

    转载自:http://www.douban.com/note/53678368/ vmware-vdiskmanager [选项]这里的选项你必须包含以下的一些选择项或参数选项和参数描述<dis ...

  3. Docker 定制容器镜像的2种方法

    一.需求 由于在测试环境中使用了docker官网的centos 镜像,但是该镜像里面默认没有安装ssh服务,在做测试时又需要开启ssh.所以上网也查了查资料.下面详细的纪录下.在centos 容器内安 ...

  4. Mysql的NULL的一个注意点

    今天看到一个问题: select a.* from a where (a.id not in (NULL)); 这个sql语句会返回什么? 刚开始以为是返回所有item,但是实际运行下返回是返回emp ...

  5. 【第三课】ANR和OOM——贪快和贪多的后果(下)

    Out of Mana,法力耗尽. 内存就像法力,耗尽了就什么都不能做了.有时候一个应用程序占用了太大的内存,超过了Android系统为你规定的限制,那么系统就会干掉你,以保证其他app有足够的内存. ...

  6. [JS] JavaScript框架(1) jQuery

    jQuery使用户能更方便地处理HTML(标准通用标记语言下的一个应用).events.实现动画效果,并且方便地为网站提供AJAX交互.jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应 ...

  7. .NET生成缩略图并下载

    缩略图:比喻一张图片宽度为1000px,大小为800K,经过缩略后变成一张宽度100px,大小10K的图片. 先给出界面: 总体的流程分5步如下图: 1.添加一个html:GetminPic.html ...

  8. ExtJS4图片验证码的实现

    ExtJS4学习笔记(十)---ExtJS4图片验证码的实现 转自:http://blog.sina.com.cn/s/blog_8d4bbd890100xaxh.html     上多少篇文章,重要 ...

  9. Winform窗体实现简单的二维码生成和保存

    二维码的生成需要用到二维码生成的类库,ThoughtWorks.QRCode.dll 步骤: 第一步:下载二维码生成类库,ThoughtWorks.QRCode.dll 第二步:新建winform项目 ...

  10. PHP实现文字水印图片

    php实现简单的文字水印图片,使用前需要开启php配置中的gd2功能 <?php/*打开图片*/ //1.配置图片路径 $src="image/55.jpg";//这个路径改 ...