我想要为 View 的阴影属性设置动画。最初我尝试过:
func animateIn(delay: TimeInterval = 0) {
UIView.animate(withDuration: 0.2, delay: delay, options: .allowUserInteraction, animations: {
self.shadowView.layer.shadowColor = UIColor.black.cgColor
self.shadowView.layer.shadowOffset = CGSize(width: 15, height: 15)
self.shadowView.layer.shadowRadius = 20
self.shadowView.layer.shadowOpacity = 0.2
self.layoutIfNeeded()
}, completion: nil)
}
鉴于 UIView.animate 不适用于图层,这不起作用。
我测试了以下帖子( How to animate layer shadowOpacity? ),但它仅指定如何对阴影不透明度进行动画处理。有没有办法像使用动画 block 一样为我的所有阴影属性设置动画?
最佳答案
你已经非常接近了,你只需为所有属性更改创建多个CABasicAnimation
,然后就可以使用CAAnimationGroup
假设您有 2 个 CABasicAnimation
动画,例如:
let shadownOpacityAnimation = CABasicAnimation(keyPath: "shadowOpacity")
...
let shadowRadiusAnimation = CABasicAnimation(keyPath: "shadowRadius")
...
然后您可以使用CAAnimationGroup
添加它们
let group = CAAnimationGroup()
group.duration = 0.2
group.repeatCount = 1
group.autoreverses = false
group.timingFunction = CAMediaTimingFunction(name: .easeInEaseOut)
group.animations = [shadownOpacityAnimation, shadowRadiusAnimation]
layer.add(group, forKey: "allAnimations")
您可以在此答案中阅读更多相关信息:
How can I create an CABasicAnimation for multiple properties?
关于ios - 动画阴影属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56977175/