IOS--GCD修改主线程UI属性

TestController.m

 1 #import "TestController.h"
 2 #import "TestView.h"
 3 
 4 @interface TestController()
 5 
 6 @property(nonatomic,strong)UIButton *button;
 7 @property(nonatomic,strong)UIProgressView *progress;
 8 
 9 @end
10 
11 @implementation TestController
12 
13 - (void)viewDidLoad
14 {
15     [super viewDidLoad];
16     
17     _button = [UIButton buttonWithType:UIButtonTypeSystem];
18     
19     _button.frame = CGRectMake(0, 20, 100, 20);
20     [_button setTitle:@"Hello" forState:UIControlStateNormal];
21     
22     [_button addTarget:self action:@selector(start:) forControlEvents:UIControlEventTouchUpInside];
23     
24     _progress = [[UIProgressView alloc]initWithFrame:CGRectMake(20, 60, 240, 25)];
25     
26     [self.view addSubview:_button];
27     [self.view addSubview:_progress];
28 }
29 
30 //GCD
31 -(void)start:(UIButton*)sender
32 {
33     dispatch_queue_t queeue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
34     dispatch_async(queeue, ^{
35         [self thLoop];
36     });
37 }
38 
39 -(void)thLoop
40 {
41     float i;
42     while (i<1) {
43         i+=0.01;
44         [NSThread sleepForTimeInterval:0.1];
45         //修改主线程UI属性,需要调用dispatch_get_main_queue()函数
46         dispatch_async(dispatch_get_main_queue(), ^{
47             self.progress.progress = i;
48         });
49     }
50 
51 }
52 
53 
54 @end
posted @ 2016-03-02 15:24  yuge790615  阅读(560)  评论(0编辑  收藏  举报