CAKeyframe动画缩放
CAKeyframeAnimation scale
我不想使用 keyframeAnimation 调整 UIView 的大小,因为它在下降时必须与标签文本同步动画。
所以我设置了大小动画
let sizeAnimation = CAKeyframeAnimation(keyPath: "transform.scale")
sizeAnimation.duration = 1.2
let animationTime = TimeInterval(1.2/Float(volumeObjects.count - 1))
// Stride is an inverted for in, it goes from volumeObjects count to 0
var sizeAnimationValuesArray = [NSValue]()
var keyTimes = [NSNumber]()
var currentKeyTime: TimeInterval = 0
for index in stride(from: volumeObjects.count - 1, to: -1, by: -1) {
let currentPercentage = CGFloat(index)/CGFloat(volumeObjects.count)
sizeAnimationValuesArray.append(NSValue(caTransform3D: CATransform3DMakeScale(1.0, currentPercentage, 1.0)))
keyTimes.append(NSNumber(value: currentKeyTime))
currentKeyTime += animationTime
}
sizeAnimation.values = sizeAnimationValuesArray
self.indicatorView.layer.add(sizeAnimation, forKey: "Bottom")
但由于某种原因,它不起作用,实际上什么也没有发生
您实际上并没有将 keyTimes
数组用于任何事情。您用时间填充了它,但没有将它分配给动画。
我不想使用 keyframeAnimation 调整 UIView 的大小,因为它在下降时必须与标签文本同步动画。
所以我设置了大小动画
let sizeAnimation = CAKeyframeAnimation(keyPath: "transform.scale")
sizeAnimation.duration = 1.2
let animationTime = TimeInterval(1.2/Float(volumeObjects.count - 1))
// Stride is an inverted for in, it goes from volumeObjects count to 0
var sizeAnimationValuesArray = [NSValue]()
var keyTimes = [NSNumber]()
var currentKeyTime: TimeInterval = 0
for index in stride(from: volumeObjects.count - 1, to: -1, by: -1) {
let currentPercentage = CGFloat(index)/CGFloat(volumeObjects.count)
sizeAnimationValuesArray.append(NSValue(caTransform3D: CATransform3DMakeScale(1.0, currentPercentage, 1.0)))
keyTimes.append(NSNumber(value: currentKeyTime))
currentKeyTime += animationTime
}
sizeAnimation.values = sizeAnimationValuesArray
self.indicatorView.layer.add(sizeAnimation, forKey: "Bottom")
但由于某种原因,它不起作用,实际上什么也没有发生
您实际上并没有将 keyTimes
数组用于任何事情。您用时间填充了它,但没有将它分配给动画。