iOS 中的休眠功能与 Spinner
Sleep function in iOS with Spinner
我有一个微调器功能,可以从流程的开始到结束启动和停止。但由于过程需要几毫秒,我真的无法让微调器转动。
[NSThread sleepForTimeInterval:2.0]; //method 1
sleep(2); //method2
然后我使用Sleep方法让代码待机,让微调器转动,但它停止了线程,然后微调器也会停止。这是代码:
if (indexPath.row == 1)
{
[MBProgressHUD showHUDAddedTo:self.view animated:YES]; //spinner starts
EmployeeDataSource *aaa=[[EmployeeDataSource alloc]init];
[aaa Logout: ^(BOOL results){
if(results == YES){
[NSThread sleepForTimeInterval:2.0]; //sleeping thread
//if logout succesfull go to login page
LoginViewController *lv = [self.storyboard instantiateViewControllerWithIdentifier:@"loginsb"];
[self presentViewController:lv animated:NO completion:nil];
[MBProgressHUD hideAllHUDsForView:self.view animated:YES]; //spinner ends
}
else{
NSLog(@"logout not succesfull");
}
}];
我希望[MBProgressHUD showHUDAddedTo:self.view animated:YES];
至少工作2秒,但不到一秒就结束了,因为正常过程很快?我怎么能延长这个时间,睡眠方法似乎不合适。你有什么主意吗?谢谢。
我认为你应该延迟一段时间再做你的事情。
为此请使用这个
[self performSelector:@selector(method) withObject:nil afterDelay:1.0];
这里的Delay是秒级的,可以自己设置。
或者你也可以这样做。
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
//Do you stuff here...
});
希望对您有所帮助。
我有一个微调器功能,可以从流程的开始到结束启动和停止。但由于过程需要几毫秒,我真的无法让微调器转动。
[NSThread sleepForTimeInterval:2.0]; //method 1
sleep(2); //method2
然后我使用Sleep方法让代码待机,让微调器转动,但它停止了线程,然后微调器也会停止。这是代码:
if (indexPath.row == 1)
{
[MBProgressHUD showHUDAddedTo:self.view animated:YES]; //spinner starts
EmployeeDataSource *aaa=[[EmployeeDataSource alloc]init];
[aaa Logout: ^(BOOL results){
if(results == YES){
[NSThread sleepForTimeInterval:2.0]; //sleeping thread
//if logout succesfull go to login page
LoginViewController *lv = [self.storyboard instantiateViewControllerWithIdentifier:@"loginsb"];
[self presentViewController:lv animated:NO completion:nil];
[MBProgressHUD hideAllHUDsForView:self.view animated:YES]; //spinner ends
}
else{
NSLog(@"logout not succesfull");
}
}];
我希望[MBProgressHUD showHUDAddedTo:self.view animated:YES];
至少工作2秒,但不到一秒就结束了,因为正常过程很快?我怎么能延长这个时间,睡眠方法似乎不合适。你有什么主意吗?谢谢。
我认为你应该延迟一段时间再做你的事情。 为此请使用这个
[self performSelector:@selector(method) withObject:nil afterDelay:1.0];
这里的Delay是秒级的,可以自己设置。
或者你也可以这样做。
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.5 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
//Do you stuff here...
});
希望对您有所帮助。