【发布时间】:2020-10-01 15:00:11
【问题描述】:
我在视图控制器中有一个带有阴影的按钮。在 viewWillAppear 中,此阴影与动画一起应用。
按钮位于名为“buttonContainer”的空视图中。
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
CATransaction.begin()
CATransaction.setCompletionBlock {
self.buttonContainer.layer.shadowOpacity = 1
}
let animation = CABasicAnimation(keyPath: "shadowOpacity")
animation.fromValue = buttonContainer.layer.shadowOpacity
animation.toValue = 1
animation.duration = 0.6
buttonContainer.layer.add(animation, forKey: animation.keyPath)
CATransaction.commit()
}
我希望阴影通过视图控制器的推送动画进行动画处理。我开始实现“UIViewControllerAnimatedTransitioning”,但找不到将动画持续时间与 CABasicAnimation 联系起来的方法。
func animateTransition(using transitionContext: UIViewControllerContextTransitioning) {
let containerView = transitionContext.containerView
let button = containerView.viewWithTag(68) as! UIButton
let animation = CABasicAnimation(keyPath: "shadowOpacity")
animation.fromValue = ?
animation.toValue = ?
}
我想我需要实现 UIViewControllerInteractiveTransitioning,但我想不出一种方法来配合 CABasicAnimation。任何帮助表示赞赏
【问题讨论】:
-
好问题,我也有同样的问题(目前使用硬编码的持续时间)!
-
我正在为
bounds属性设置动画,到目前为止,我唯一想到的是使用CADisplayLink将其与UIView同步。签出this。