2013-05-13 49 views
7

刪除它在這最多需要幾秒鐘我有一個方法:顯示旋塗器在同一個塊

UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(135,140,50,50)]; 
spinner.color = [UIColor blueColor]; 
[spinner startAnimating]; 
[_mapViewController.view addSubview:spinner]; 

// lots of code 

[spinner removeFromSuperview]; 

旋轉器不顯示。可能因爲屏幕當時沒有更新。 我該如何解決這個問題?

+3

通過把'在不同的線程//很多code'的。 – 2013-05-13 19:47:36

+0

你可以展示一些更多的代碼,包括你有這個代碼的地方嗎? – 2013-05-13 19:47:47

回答

22

使用GCD:

UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(135,140,50,50)]; 
spinner.color = [UIColor blueColor]; 
[spinner startAnimating]; 
[_mapViewController.view addSubview:spinner]; 

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
    // lots of code run in the background 

    dispatch_async(dispatch_get_main_queue(), ^{ 
     // stop and remove the spinner on the main thread when done 
     [spinner removeFromSuperview]; 
    }); 
}); 
+0

謝謝,我會盡快嘗試 – clankill3r 2013-05-14 15:17:06

+0

在第二個'dispatch_async'中,是否在主線程中運行?我是否可以調用繼續執行其他應用程序的方法 – qaisjp 2013-12-29 08:28:18

+0

這正是我所需要的! – 2014-10-31 09:53:04

相關問題