[英]UIImageView change image immediately
在我當前的實現中,我點擊視圖,僅在完成整個點擊手勢方法之后,圖像才會更改。 但是,如何在調用后立即刷新視圖,以便用戶看到新圖像幾秒鍾,然后從此繼續處理。
編輯:更多信息。 我只想顯示新圖像1秒鍾。 然后,應該顯示舊圖像。這就是我想要睡眠功能的原因。我們的目標是在這里玩帶有紙牌的棋盤游戲...
建議有人嗎?
myUIImageViewSubclass.image = [UIImage imageNamed:@"newImage.jpg"];
[myUIImageViewSubclass refresh]; // <- that's what I'm looking for
sleep(1);
//do something else
myUIImageViewSubclass.image = [UIImage imageNamed:@"oldImage.jpg"];
在方法返回之前,顯示不會更新圖像,您對此無能為力,這就是顯示循環的工作方式。 如果處理時間足夠長,以致在UI上產生明顯的延遲,則應將該代碼分派到另一個隊列。
UI更新必須在主線程上完成,因此當您想要將圖像改回原位時,需要回到它上。
myUIImageViewSubclass.image = [UIImage imageNamed:@"newImage.jpg"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
sleep(1);
//do other stuff
dispatch_async(dispatch_get_main_queue(), ^{
myUIImageViewSubclass.image = [UIImage imageNamed:@"oldImage.jpg"];
});
});
我對這些手勢檢測器一無所知,但是您可以在視圖控制器中使用touchesBegan:withEvent:
和touchesEnded:withEvent
方法。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSSet *t = [event touchesForView:_myImageView];
if([t count] > 0) {
// Change image here
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
NSSet *t = [event touchesForView:_myImageView];
if([t count] > 0) {
// Or change image here
}
}
不要在這些方法中使用睡眠方法,否則會延遲
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.