ios - 多次调用 CATransaction 完成

ios - CATransaction completion called multiple times

当我使用 CATransaction 完成等待动画完成时,它多次调用完成。这是它应该只调用一次。这是示例代码

@objc func spinWheel(sender: UIPanGestureRecognizer) {
    CATransaction.begin()
    CATransaction.setCompletionBlock{ [weak self] in
        print("hello")
    }
    startRotation(angle: calculatePosition)
    CATransaction.commit()
}

所以在我滑动 UIView 后,它会旋转。完成旋转后,我将尝试打印。它将打印大约 6-7 次。应该只调用一次

我认为你制作这个动画的方法是错误的。当您向视图添加平移手势并平移它时。只要您在平移,它就会一直调用委托。

所以你应该做的是用 UISwipeGestureRecognizer 替换 UIPanGestureRecognizer 或者在平移手势结束时处理完成。