2017-04-24 75 views
1

在我的應用程序中,我需要一些動畫,但如果它已經動畫,則不需要持續一段時間。但我的問題是它會自動添加一個持續時間。即使我不想要快速動畫持續時間(自動?)

在這裏你可以看到2個函數,第二個函數沒有持續時間,但它確實有一個持續時間(從大概1秒),第一個函數有一個持續時間(它應該有,沒關係),但它不是0.6秒,因爲如果我將它設置爲30,它仍然非常快速地動畫。

我做錯了什麼,在此先感謝!

func openMessage() { 
    UIView.animate(withDuration: 0.6, delay: 0.0, options: [], animations: { 
     var t = CATransform3DIdentity; 
     t = CATransform3DMakeRotation(CGFloat(3 * Float.pi/4), 0, 0, 1) 
     self.moveableLineLayer.transform = t; 
    }, completion:{(finished:Bool) in }) 
} 

func openMessageWithoutAnimation() { 
    self.moveableLineLayer.transform = CATransform3DIdentity 
    var t = CATransform3DIdentity; 
    t = CATransform3DMakeRotation(CGFloat(3 * Float.pi/4), 0, 0, 1) 
    self.moveableLineLayer.transform = t; 
} 

回答

1

考慮使用velocity參數。從文檔:

速度

初始彈簧速度。爲了順利開始動畫,請將該值與視圖的速度匹配,因爲它與附件之前相同。 值1對應於在一秒內遍歷的總動畫距離。例如,如果總動畫距離爲200點,並且您希望動畫的開頭匹配100pt/s的視圖速度,則使用值0.5。

+0

感謝您的回覆,但我該如何使用此參數?找不到將其添加到轉換的方法,以及如何在沒有動畫的情況下進行設置? – MaximVW

+0

我剛剛測試了你的代碼,它似乎正常運行。即使在你提到的30秒內設置openMessage()函數也會應用持續時間。也許在調用你的函數時,你會用另一個動畫覆蓋它。 –

+0

它確實沒有重寫另一個動畫,我只是調用這個方法。這很奇怪 – MaximVW