2010-04-24 51 views
0

我撞我就在這裏頭撞牆,由於這個問題:iphone - 使CGAffineTransform永久

當我創建一個UIImageView這種觀點具有一定的方向和大小。讓我們稱這個狀態爲「A」。

該視圖響應點擊。它可以在屏幕上拖動。

在代碼中的某個位置,我將CGAffineTransform應用於該視圖。如果仿製品是規模,旋轉,翻譯或全部組合,則無關緊要。如果變換是絕對的或相對的,也無關緊要。更不用說設備可以改變其方向,並且視圖被自動旋轉到正確的方向(我們可以說是一種應用於視圖的旋轉或變換)。

問題是:當我觸摸該對象或試圖爲其透明度或任何其他參數設置動畫時,它會「記住」狀態「A」,並從該狀態執行所有動畫,而不是從當前狀態執行動畫。如果我只是觸摸視圖,它會立即返回狀態「A」。代碼本身並沒有這樣做。這很煩人。如何讓視圖將其當前的轉換狀態假定爲重置或初始狀態?換句話說,我如何讓視圖忘記過去的轉換或狀態?

我知道的唯一方法是重新創建視圖,但這是一個荒謬的做法。

有沒有什麼方法可以使我的工作如前所述?

感謝

+0

「我將CGAffineTransform應用於視圖」< - 請在代碼中顯示這意味着什麼。 – Ken 2010-04-24 04:40:32

+0

請顯示代碼.... – 2010-04-24 06:24:12

+0

沒有更多信息,我會懷疑您正在操作視圖的COPY,或將轉換應用於COPY(或新對象)。檢查指向您的「A」對象的指針的內存地址,並將其與轉換的對象以及拖動的對象進行比較。他們應該都是一樣的。 – gnasher 2010-04-24 09:31:00

回答

2

據我所知,所有的SDK動畫自動創建一個副本,在副本上進行動畫,而隱藏原件。在你的代碼中,你將有一個getState行開始,並創建指向動畫對象的指針。要在動畫例程結束時使其處於永久狀態,請將原始對象視圖設置爲動畫視圖。

IIRC它是這樣的,但我沒有我的代碼示例在我面前:

myOriginalObject.view = myMnimationObject.view 

顯然做到這一點,你釋放你的動畫之前,但你與轉換完成後。