我正在努力理解为什么以下关键帧动画无法达到我的预期。这里的minutesClock是UIView的子类,它也是主视图的子视图。通过暴露约束来设置minuteClock的水平位置。 minutesClock自己的图层有一个名为borderLayer的CAShapeLayer子图层。
我正在尝试同时设置分钟时钟的位置和该孙子borderLayer的填充颜色的动画。我发现关键帧可以用于定位,但是CAShapeLayer可以忽略。也就是说,虽然分钟钟在整个持续时间的一半移至100,但我看不到borderLayer的填充颜色变为红色。取而代之的是,它看起来动画非常快(例如四分之一秒)变成绿色。
UIView.animateKeyframes(withDuration: 2.0,
delay: 0,
options: .calculationModeLinear,
animations: {
UIView.addKeyframe(withRelativeStartTime: 0.0,
relativeDuration: 0.5,
animations: {
self.minuteClockPositionConstraint.constant = 100
self.minuteClock.borderLayer.fillColor = UIColor.red.cgColor
self.view.layoutIfNeeded()
})
UIView.addKeyframe(withRelativeStartTime: 0.5,
relativeDuration: 0.5,
animations: {
self.minuteClockPositionConstraint.constant = 50
self.minuteClock.borderLayer.fillColor = UIColor.green.cgColor
self.view.layoutIfNeeded()
})
}, completion: nil)
我想我可能正在解决这个错误,将视图级的关键帧动画与通过更改CAShapeLayer的属性触发的隐式动画混合在一起。
关于我应该如何做的任何建议?