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...
    });

希望对您有所帮助。