自定义条形进度条(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. NPM使用详解(下)

    NPM使用详解(下) *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !impo ...

  2. [Code::Blocks] Install wxWidgets & openCV

    The open source, cross platform, free C++ IDE. Code::Blocks is a free C++ IDE built to meet the most ...

  3. 通过组策略实现IE自动以当前域账号登录某站点

    SharePoint基于windows验证的如何通过组策略实现IE自动以当前域账号登录某站点 1. 在运行中运行MMC,启动“组策略对象编辑器”. 如下图: 2.找到组策略,如下图: 3.找到对应的域 ...

  4. Hadoop第6周练习—在Eclipse中安装Hadoop插件及测试(Linux操作系统)

    1    运行环境说明 1.1     硬软件环境 1.2     机器网络环境 2    :安装Eclipse并测试 2.1     内容 2.2     实现过程 2.2.1   2.2.2   ...

  5. Frame - 快速创建高品质的 Web 应用原型

    Frame 是一个让你够能够快速创建高品质的网站或应用程序产品原型的工具.你上传的图片将被包裹在真实的设备环境中.它是一个用于创建宣传资料的专业工具.Frame 完全免费供给商业和个人使用.他们也正探 ...

  6. Qt之QAbstractItemView视图项拖拽(一)

    一.需求说明 最近在搞视图项的拖拽,也上网查了一些资料,好多的文档都是一样的,只是被不通的网站所收录了(也有可能是被爬过去的,不明所以),不过也有一些文档写的不错,不过就是太简易,都是点睛之笔,总之功 ...

  7. Mysql创建用户的三种基本方法

    1.采用create user e.g.  create user 'username'@'host' identified by 'password'; 2.采用grant语句 e.g.  gran ...

  8. 领域驱动设计(DDD)实现之路

    2004年,当Eric Evans的那本<领域驱动设计——软件核心复杂性应对之道>(后文简称<领域驱动设计>)出版时,我还在念高中,接触到领域驱动设计(DDD)已经是8年后的事 ...

  9. Sprint总结和第八九十的读书笔记

    总结:经过这次的Sprint,我在从中收获了很多.作为产品负责人的我,主要责任就是合理分配任务给自己的队友,调动队友的积极性.虽然这其中也有些不尽人意的地方,但是我们都坚持的走了过来,团队合作真的很重 ...

  10. 数论 - 算数基本定理的运用 --- nefu 118 : n!后面有多少个0

     题目链接:http://acm.nefu.edu.cn/JudgeOnline/problemshow.php Mean: 略. analyse: 刚开始想了半天都没想出来,数据这么大,难道是有什么 ...