ios - 动画阴影属性

标签 ios swift

我想要为 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/

相关文章:

javascript - Phonegap 版本 : Application cannot run on iOS

iphone - CLLocationManager 没有获取城市名称

ios - 为什么我们不能在 UITableView、Objective C 上检测到 UITouch 逻辑

ios - 使用UserDefaults来存储不同用户的数据

ios - 不上传 watch 套件应用程序

objective-c - 2 个应用程序代表,swift 和 Objective-c

iphone - 使用计算大小动态加载 Tableview 标题

ios - 为什么这些按钮在大屏幕设备上显示不正确? ( swift )

ios - UIViewController 子类所需的初始值设定项

swift - 构建 Firebase 登录 Xcode