2017-04-24 79 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