ios线程练习更新进度条

类似于,我们加载网页时候的进度条,我们来看看它们是怎么工作的。

#import "ViewController.h"

@interface ViewController ()

{

UIProgressView *_view;

}

@end

@implementation ViewController

- (void)viewDidLoad {

[super
viewDidLoad];

//设置进度条

_view = [[UIProgressView
alloc]init];

_view.frame =
CGRectMake(20,
100, 300,
3);

_view.progress =
0;

[self.view
addSubview:_view];

UIButton *btn = [[UIButton
alloc]init];

btn.frame =
CGRectMake(60,
150, 200,
20);

[btn setTitle:@"点击更新"
forState:UIControlStateNormal];

btn.backgroundColor = [UIColor
redColor];

[btn addTarget:self
action:@selector(btnClick:)
forControlEvents:UIControlEventTouchUpInside];

[self.view
addSubview:btn];

}

//在子线程中更新进度条

-(void)btnClick:(UIButton *)btn

{

//表现在幕后

[self
performSelectorInBackground:@selector(updateProgressView)
withObject:nil];

}

-(void)updateProgressView

{

while (1) {

if (_view.progress<1) {

//每次累加0.0001的值

NSNumber *number = [NSNumber
numberWithFloat:_view.progress+0.0001];

[self
performSelectorOnMainThread:@selector(setProgressViewProgress:)
withObject:number waitUntilDone:NO];

//延迟0.0005

[NSThread
sleepForTimeInterval:0.0005];

}

else//否则结束

{

break;

}

}

NSLog(@"1111");

}

//更新进度条()

-(void)setProgressViewProgress:(NSNumber *)number

{

//给progressview设置数值

[_view
setProgress:[number floatValue]];

}

@end

今天2更了,明天继续。求知若饥,虚心若愚。这几天找工作找的蛮辛苦的,在大上海不容易啊,明天就要去面试了,估计一天都在外面跑,只有晚上有时间能给大家写东西,我会保持下去的,同时保证质量,当然如果有错误的话,大家可以明确指出来,我可以修改。嘻嘻,祝大家美梦,晚安。

时间: 2024-10-25 06:54:52

ios线程练习更新进度条的相关文章

[wxWidgets]_[0基础]_[经常更新进度条程序]

场景: 1. 非常根据程序的进展需要处理业务,以更新进度条,进度条的目的是为了让用户知道业务流程的进度.一个进度条程序更友好,让用户知道在程序执行.不是没有反应. 2. 现在更新见过这两种方法的进展.事件(信号,队列)的发送让主线程依照发送的顺序来更新进度条,一种是设置一个全局整形变量, 通过执行定时器的方式来更新进度条.第一种不适合在更新频率比較高的地方,比方一秒钟发送了20个事件,这样会造成主线程忙于处理事件界面出现假死状态. 所以最好的办法就是使用第2种通过定时器更新进度条,设置一个合理的

android一个上传图片的例子,包括如何终止上传过程,如果在上传的时候更新进度条(一)

先上效果图: Layout为: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent&quo

C# 模式窗口下更新进度条

public partial class frmProcessBar : Form { public frmProcessBar() { InitializeComponent(); } public bool Increase(int nValue) { if (nValue > 0) { if (progressBar1.Value + nValue < progressBar1.Maximum) { progressBar1.Value += nValue; return true; }

[wxWidgets]_[初级]_[常见更新进度条的方案]

场景: 1. 很多程序需要根据处理业务的进度来更新进度条,进度条的目的是让用户能知道业务处理的进度,有进度条的程序更友好,让用户知道程序在运行,而不是没有响应. 2. 现在更新进度条的见过两种方法,一种是通过事件(信号,队列)的发送让主线程按照发送的顺序来更新进度条,一种是设置一个全局整形变量, 通过运行定时器的方式来更新进度条.第一种不适合在更新频率比较高的地方,比如一秒钟发送了20个事件,这样会造成主线程忙于处理事件界面出现假死状态. 所以最好的办法就是使用第2种通过定时器更新进度条,设置一

WPF BackGroundWord 异步加载更新进度条示例

1 <Window x:Class="AsynchronousLoading.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4 xmlns:d="http://schemas.microsoft.com/e

Android UI(四)云通讯录项目之云端更新进度条实现

作者:泥沙砖瓦浆木匠 网站:http://blog.csdn.net/jeffli1993 个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节. 交流QQ群:[编程之美 365234583]http://jq.qq.com/?_wv=1027&k=XVfBTo 一.前言 继续AndroidUI系列,UI其实是个前端活,美感是最终的boss阶段.泥瓦匠的美感也就给你们评论评论哈哈,我等UI写到一定地步.我想写下Android的一系列简单入门.为了巩固提升呗.哈哈.下面介入正题.   

C# 通过线程来控制进度条(转)--讲解多线程对界面的操作

// 通过创建委托解决传递参数问题 private void _btnRun_Click( object sender, System.EventArgs e ) { RunTaskDelegate runTask = new RunTaskDelegate( RunTask ); // 委托同步调用方式 runTask( Convert.ToInt16( _txtSecond.Value ) ); } //通过创建委托解决传递参数问题,通过委托的异步调用消除用户界面线程的阻塞问题 privat

【iOS】环形渐变进度条实现

之前有人在找渐变进度条的效果,闲来无事就顺手写了一个,然后画了视图层级,方便讲解. 环境信息: Mac OS X 10.10.3 Xcode 6.3.1 iOS 8.3 效果图: 源码下载地址: https://github.com/saitjr/LoopProgressDemo.git 正文 一.视图层级 首先需要搞定的就是视图层级关系.可以看到, 1. 背景是有透明度的蓝色(blueView) 2. 需要一个从绿->黄->红的渐变色,那个这里我采用的是Layer(colorLayer) 3

iOS Quartz2D模拟下载进度条

效果图: 步骤: 1.在StoryBoard中拖入一个控制器添加UISlider和UIView 2个控件 2.在控制器中连线监听UISlider的值变化事件.HJProgressView属性,把变化的值传递给自定义UIView 3.自定义HJProgressView重写progressValue属性set方法,重绘视图中得文字和弧度值 控制器代码: #import "ViewController.h" #import "HJProgressView.h" @inte