簡體   English   中英

UIImageView立即更改圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM