iOS Quartz2D模拟下载进度条

效果图:

步骤:

  1.在StoryBoard中拖入一个控制器添加UISlider和UIView 2个控件

  2.在控制器中连线监听UISlider的值变化事件、HJProgressView属性,把变化的值传递给自定义UIView

  3.自定义HJProgressView重写progressValue属性set方法,重绘视图中得文字和弧度值

控制器代码:

#import "ViewController.h"
#import "HJProgressView.h"

@interface ViewController ()

@property (nonatomic,strong) IBOutlet HJProgressView *progressView;

- (IBAction)didSliderValueChange:(UISlider *)sender;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

/**
 *  sender.value值 0.0~1.0
 *
 *  @param sender <#sender description#>
 */
- (IBAction)didSliderValueChange:(UISlider *)sender {
    NSLog(@"%f",sender.value);
    self.progressView.progressValue = sender.value;
}

@end

自定义视图代码:

//
//  HJProgressView.m
//  画进度条
//
//  Created by HJiang on 15/1/2.
//  Copyright (c) 2015年 HJiang. All rights reserved.
//

#import "HJProgressView.h"

@interface HJProgressView()

// 定义属性保存上次的弧度起始
//@property (nonatomic,assign) CGFloat endAngle;

@end

@implementation HJProgressView

- (void)setProgressValue:(float)progressValue{
    _progressValue = progressValue;

    // 重新绘制ProgressView图形
    [self setNeedsDisplay];
}

/**
 *  绘制进度条
 *  x,y 圆心
 *  radius 半径
 *  startAngle 画弧的起始位置
 *  endAngel 画弧的结束位置
 *  clockwise 0 顺针 1 逆时针
 *  @param rect rect description
 */
- (void)drawRect:(CGRect)rect{

    // 1.设置进度文字
    CGFloat w = 40;
    CGFloat h = 30;
    CGFloat x = 13;
    CGFloat y = rect.size.height/2-5;
//    NSString *progressText = [NSString stringWithFormat:@"%.02f",self.progressValue];
    // 输出进度百分比数字
    NSMutableString *progressText = [NSMutableString string];
    [progressText appendFormat:@"%.01f",self.progressValue * 100];
    [progressText appendString:@"%"];

    // 控制文字字体大小和颜色属性
     NSDictionary *attrs = @{NSFontAttributeName:[UIFont systemFontOfSize:10],NSForegroundColorAttributeName:[UIColor redColor]};
    [progressText drawInRect:CGRectMake(x, y, w, h) withAttributes:attrs];

    CGContextRef ctx = UIGraphicsGetCurrentContext();
    // 设置颜色
    CGContextSetRGBStrokeColor(ctx, 0.5, 0.5, 0.5, 1);

    // 设置线条大小
    CGContextSetLineWidth(ctx, 3);

    // 2.绘制弧形进度
    CGFloat endAngle = self.progressValue * 2 * M_PI - M_PI_4;

    CGContextAddArc(ctx, 30, 30, 25,-M_PI_4, endAngle, 0);

    CGContextStrokePath(ctx);

}

@end
时间: 2024-10-12 15:51:45

iOS Quartz2D模拟下载进度条的相关文章

关情纸尾-----Quartz2D绘制下载进度条,饼图

绘制下载进度条 1.搭建界面. 2.拖动滑竿的时候让他里面的能够跟着我的拖动,数字在改变. 数字改变时有一个注意点, 就是要显示%,它是一个特殊的符号,要用两个%%代表一个% 3.拖动滑竿的时候就是在上面画弧. 从最上面,按顺时针画,所以,它的起始角度是-90度.结束角度也是-90度 也是从起始角度开始画, 起始角度-90度, 看你下载进度是多少 假如说你下载进度是100,就是1 * 360度 也就是说这个进度占你360度多少分之一 CGContextRef ctx = UIGraphicsGe

模拟下载进度条

import time def process(percent, width=30): percent = percent if percent <= 1 else 1 text=('\r[%%-%ds]'%width)%('*'*int(width*percent)) text=text+'%d%%' text=text%(percent*100) print(text,end='') file_size=10240 cur_size=0 while True: time.sleep(0.01

关情纸尾-----Quartz2D绘制圆形下载进度条,饼图

绘制下载进度条 1.搭建界面. 2.拖动滑竿的时候让他里面的能够跟着我的拖动,数字在改变. 数字改变时有一个注意点, 就是要显示%,它是一个特殊的符号,要用两个%%代表一个% 3.拖动滑竿的时候就是在上面画弧. 从最上面,按顺时针画,所以,它的起始角度是-90度.结束角度也是-90度 也是从起始角度开始画, 起始角度-90度, 看你下载进度是多少 假如说你下载进度是100,就是1 * 360度 也就是说这个进度占你360度多少分之一 CGContextRef ctx = UIGraphicsGe

Flex 4.6 下载进度条 IPreLoaderDisplay生命周期

Flex4.6 程序的主类实际上为SystemManager的子类.SystemManager会创建Preloader对象,然后调用PreLoader对象的initialize方法,该方法有如下签名  public function initialize(showDisplay:Boolean,                                 displayClassName:Class,                                backgroundColo

用 CALayer 定制下载进度条控件

// // RPProgressView.h // CALayer定制下载进度条控件 // // Created by RinpeChen on 16/1/2. // Copyright © 2016年 rinpe. All rights reserved. // #import <UIKit/UIKit.h> @interface RPProgressView : UIView @property (nonatomic, assign) CGFloat progressValue; // 进

HTML5 CSS3 诱人的实例 : 网页加载进度条的实现,下载进度条等

今天给大家带来一个比较炫的进度条,进度条在一耗时操作上给用户一个比较好的体验,不会让用户觉得在盲目等待,对于没有进度条的长时间等待,用户会任务死机了,毫不犹豫的关掉应用:一般用于下载任务,删除大量任务,网页加载等:如果有使用html5为手机布局的,也可以用于手机中~ 效果图: 1.html结构: <div id="loadBar01" class="loadBar"> <div> <span class="percent&qu

仿苹果AppStore 下载进度条

以前项目自己写的 ,一个模仿苹果AppStore 下载进度条的winfrom用户控件,GDI绘制.效果如图 1 using System.Drawing; 2 using System.Windows.Forms; 3 using System.ComponentModel; 4 namespace test 5 { 6 public class CircleProgressBar : Control 7 { 8 float _progress = 0F; 9 float _Wpen = 1;

Python HTTP下载文件并显示下载进度条

下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条. 其中利用request模块下载文件可以直接下载,不需要使用open方法,例如: import urllib import requests.packages.urllib3 requests.packages.urllib3.disable_warnings() url = "https://raw.githubusercontent.com/racaljk/hosts/maste

android异步任务图片下载(进度条提示进度)

一.AsyncTask介绍 Android提供了几种在其他线程中访问UI线程的方法. Activity.runOnUiThread( Runnable ) View.post( Runnable ) View.postDelayed( Runnable, long ) Hanlder 这些类或方法同样会使你的代码很复杂很难理解.然而当你需要实现一些很复杂的操作并需要频繁地更新UI时这会变得更糟糕. 为了解决这个问题,Android 1.5提供了一个工具类:AsyncTask,它使创建需要与用户界