2016-01-04 43 views
0

我試圖增加與按鈕動畫溫度點擊 它工作時,我點擊按鈕第一次,但是當我點擊按鈕再沒有任何反應。 我使用一個圖像視圖(紅色)用於顯示溫度 這裏是我的代碼,我使用的背後動作 this is my meter[![][1]] 2如何使用按鈕點擊不同的點進行相同的動畫IOS斯威夫特

 UIView.animateWithDuration(3.0, animations: { 

     self.progress.transform = CGAffineTransformMakeTranslation((self.progress.frame.origin.x -self.progress.frame.origin.x), -30) 
    }) 

應該每次增加我點擊+按鈕,但它不是發生 任何人都可以解釋是什麼問題?不一定需要

+0

你有什麼期望這導致:self.progress.frame.origin.x -self.progress.frame.origin.x – Tapani

+0

我這樣做是因爲我的動畫在X軸上移動,即使我不想它,所以我以這種方式處理它! –

+1

爲什麼不把0代替爲x? – abarbier

回答

1

要移動你的形象,你應該做你轉換的串聯

UIView.animateWithDuration(3.0, animations: { 

    let transform = CGAffineTransformMakeTranslation(0, -30) 
    self.progress.transform = CGAffineTransformConcat(self.progress.transform, transform) 
}) 
+0

我不知道如何使用concat比只增加一個變量更好。變量可能是在引擎蓋下更簡單的操作。 – Tapani

+0

您可能是對的,但這種方式在閱讀時更容易理解(只有2行,沒有實例變量來跟蹤用戶點擊按鈕的次數)。讓我們誠實地表現明智,這不會讓你的應用變慢。所以剛纔的事實,是更具可讀性和不太複雜,我們可以承認這是不是在這種情況下,加入了可變 – abarbier

+0

正是我們需要跟蹤多少時間用戶輕按按鈕更好 –

1

CGAffineTransformMakeTranslation如果只有移動框架。簡單地通過設置一個新的框架到視圖也可以做到這一點。另外,如果您不重置任何位置的變換,則第二次沒有任何動畫。或者不重置,您應該遞增/遞減值-30,而不是每次使用相同的值。

+0

我不想重置它,我想我的吧「進步」(這是一個ImageView的)的最後位置在Y軸移動,每當我按一下按鈕 –

+0

,我看到一個教程在導師推薦使用,而不是通過只是改變,沒有任何問題的框架移動視圖的框架直接 –

+0

我一直做動畫CGAffineTransformMakeTranslation。您始終將y翻譯設置爲-30。如果你想增量轉換,那麼你需要在前面的翻譯中加-30。 – Tapani

相關問題