[英]UIProgressView progress not updating even when run in the main thread
UIProgressView进度不会在iOS8和9中更新,但即使在主线程中运行,也可以在iOS7中运行。 我的代码如下,希望有所帮助。
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
self.timer = [NSTimer scheduledTimerWithTimeInterval: 0.1f target:self selector: @selector(handleProgressBar) userInfo: nil repeats: YES];
}
- (void) handleProgressBar{
if(self.usedTime >= 300.0)
{
[self.timer invalidate];
self.timer=nil;
[self submitAns:[NSNumber numberWithInt:-1]];
}
else
{
self.usedTime += 1;
CGFloat progress = self.usedTime*(0.0033333333);
[self performSelectorOnMainThread:@selector(updateProgress:) withObject:[NSNumber numberWithFloat:progress] waitUntilDone:NO];
if(self.usedTime>200){
[self.progressBar setProgressTintColor:[UIColor redColor]];}
}
}
- (void)updateProgress:(NSNumber *)progress {
float fprogress = [progress floatValue];
//self.progressBar.progress = fprogress;
[self.progressBar setProgress:fprogress animated:YES];
}
@property (strong, nonatomic) UIProgressView *progressView;
@property (nonatomic) CGFloat usedTime;
我把它放在viewDidLoad
方法中
_progressView = [[UIProgressView alloc] initWithFrame:CGRectMake(0, 500, self.view.bounds.size.width, 50)];
[self.progressView setProgress:0.0];
[self.view addSubview:self.progressView];
self.timer = [NSTimer scheduledTimerWithTimeInterval: 0.1f target:self selector: @selector(handleProgressBar) userInfo: nil repeats: YES];
[![enter image description here][1]][1]//-----------------------------------------------------------------------
- (void) handleProgressBar{
if(self.usedTime >= 300.0)
{
[self.timer invalidate];
self.timer=nil;
// [self submitAns:[NSNumber numberWithInt:-1]];
}
else
{
self.usedTime += 1;
CGFloat progress = self.usedTime*(0.0033333333);
[self performSelectorOnMainThread:@selector(updateProgress:) withObject:[NSNumber numberWithFloat:progress] waitUntilDone:NO];
if(self.usedTime>200){
[self.progressView setProgressTintColor:[UIColor redColor]];}
}
}
//-----------------------------------------------------------------------
- (void)updateProgress:(NSNumber *)progress {
float fprogress = [progress floatValue];
//self.progressBar.progress = fprogress;
[self.progressView setProgress:fprogress animated:YES];
}
//-----------------------------------------------------------------------
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.