2015-12-03 92 views
0

我對編碼還是很陌生,所以代碼越簡單越好,如果你能提供一個非常感謝的解釋!等待目標c

circle1.image = [UIImage imageNamed: @"circle2.png"]; 目前我使用sleep(1.0)的代碼,但據我可以瞭解睡眠暫停的UIView因此沒有在屏幕上移動。

我想是要做到這一點:

circle1.image = [UIImage imageNamed: @"circle2.png"]; // This changes the circles image 
wait(2.0) // I know this isn't objective-c code but I'm unsure on how to create a pause without pausing the screen (if that makes any sense) 
circle1.image = [UIImage imageNamed: @"circle1.png"]; // Circle 1 image changes back to original picture after 2 seconds 

我的問題是有沒有辦法創造一個暫停,但沒有畫面凍結(因此睡眠)。

我讀過有NSTimers的方法,但我沒有在選擇器中得到這個代碼,所以我不知道如何與工作。

任何幫助將是巨大的幫助!我想在離開學校後成爲應用程序開發人員,所以每個答案都會有所幫助:)

+1

你想暫停什麼?你的問題很不清楚。 – rmaddy

+0

對不起,如果我的問題不清楚。當我需要出門時,我很快打字。我想在circle1.image = [UIImage imageNamed:@「circle2.png」];和我的其他代碼行,但我不希望它完全暫停應用程序,所以如果有意義的話,屏幕上沒有任何東西在移動。 –

+0

這並沒有說明太多。用更相關的代碼更新你的問題。顯示包含您最初發布的行的整個方法。並解釋需要等待什麼。 – rmaddy

回答

3

有幾種方法可以連續執行,在兩者之間暫停。最簡單的解釋是使用GCD推遲的塊。

// change the image immediately 
circle1.image = [UIImage imageNamed: @"circle2.png"]; 

// 2 seconds later, change the image again 
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 
    circle1.image = [UIImage imageNamed: @"differentImage.png"]; 
}); 

// 4 seconds later (important: 4 seconds after the immediate change) do it again 
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 4 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ 
    circle1.image = [UIImage imageNamed: @"differentDifferentImage.png"]; 
}); 
+0

感謝您的回答。與其他解釋和例子相比,這是有道理的。我會將其插入我的代碼並嘗試一下。再次感謝! –