swift - UIButton 动画在 UIScrollView 上不起作用
问题描述
我的 ScrollView 上的按钮动画不起作用。我有其他只是 UIViews 和动画的 VC 工作得很好。所以我尝试从属性检查器中取消选中并添加......
self.scrollView.delaysContentTouches = false
...在我看来DidLoad,但它有效果。
我还发现点击不会触发动画,但按住按钮一秒钟或更长时间会触发动画,并且触觉按压也会触发动画。
这是我的动画代码:
extension UIButton {
func startAnimatingPressActions() {
addTarget(self, action: #selector(animateDown), for: [.touchDown, .touchDragEnter])
addTarget(self, action: #selector(animateUp), for: [.touchDragExit, .touchCancel, .touchUpInside, .touchUpOutside])
}
@objc private func animateDown(sender: UIButton) {
animate(sender, transform: CGAffineTransform.identity.scaledBy(x: 0.95, y: 0.95))
}
@objc private func animateUp(sender: UIButton) {
animate(sender, transform: .identity)
}
private func animate(_ button: UIButton, transform: CGAffineTransform) {
UIView.animate(withDuration: 0.4,
delay: 0,
usingSpringWithDamping: 0.5,
initialSpringVelocity: 3,
options: [.curveEaseInOut],
animations: {
button.transform = transform
}, completion: nil)
}
}
我可以让这个动画工作,但感觉不太对劲。所以我宁愿不使用下面的代码。但它确实有效。所以我不确定上面的代码是什么导致了这个问题。
extension UIButton {
func pulsate() {
let pulse = CASpringAnimation(keyPath: "transform.scale")
pulse.duration = 0.2
pulse.fromValue = 0.96
pulse.toValue = 1.0
pulse.repeatCount = 0
pulse.initialVelocity = 0.5
pulse.damping = 1.0
layer.add(pulse, forKey: nil)
}
}
解决方案
我有同样的问题,我解决了取消选中滚动视图属性检查器中的延迟触摸按钮: ScrollView's attrobutes 检查器
推荐阅读
- sql - 替换 Redshift 中的特殊 Unicode 字符
- kubernetes - IBM-MQ 图表创建队列
- powerbi - PowerBI切片器选择表格中的“多个”列以在折线图中显示多条线?
- python - 在最坏的情况下,插入排序和选择排序的比较次数是多少?
- c++ - 如何在 C++ 中制作多个向量
- javascript - 返回函数不会在 React 中呈现
- mysql - 如何在 VBA 中定义 Recordset.GetRows 参数?
- sql - 创建仅包含日期的年份部分的复合唯一键约束
- ibm-cloud - 无法将模型 zip 上传到 Cloud Annotations
- javascript - 如何将参数传递给 js 脚本?