swift - UIView block 动画完成始终为真

标签 swift animation uiscrollview

我有一个动画,我最近发现它不工作

//time is a variable used in my code
UIView.animate(withDuration: time, delay: 0, options: [.curveLinear, .allowUserInteraction], animations: {

                //this class is ofType UIScrollView
                self.setContentOffset(CGPoint(x: self.contentSize.width-self.frame.width, y: 0), animated: false)

            //Completion Handler
            }, completion: { finished in

                    //It's always true, not sure a way to fix this
                    if(finished ) {

但是,在我的代码后面,我有一个方法可以删除某些动画,特别是从此 scrollView 中。

self.layer.removeAllAnimations()

它被调用了,我认为它应该是上面的

if(finished ) { //Here

return false,所以不应该进去finished里面。但是,完成总是正确的。无论我是取消这个动画,还是继续这个动画,不管我对动画做了什么,完成处理程序总是真实的。关于此事的任何提示?

最佳答案

您对 setContentOffset 的调用指定了 animated:false,如果这是您要更改的唯一属性,则没有实际的动画在进行,因此对 .animate(...) 的调用将始终以 true 值完成.如果您使用 animated:true 设置此属性(或另一个属性)并且您的持续时间太短而动画无法完成,那么它可能会以参数的 false 值完成。

关于swift - UIView block 动画完成始终为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44478635/

相关文章:

ios - 通过ObjectIdentifier访问对象(指针)

swift - 交换栏按钮项目

Swift 3 - 通过 Int 属性减少对象集合

swift - 如何使用 Swift 制作水平 UICollectionView

ios - 更改 UIImageView 中 UIImage 的大小和位置(快速)

ios - CGAffineTransformMakeTranslation 与 CGRectOffset 动画

java - 我怎样才能一个接一个地为一个 View 设置动画,而不是同时设置所有 View ?

javascript - 尝试使用 CSS/jQuery 在悬停时平滑/连续地制作正弦波链接下划线动画

swift - ScrollView 委托(delegate)方法也在滚动 Collection View 时调用

html - 获取UIWebView当前滚动偏移量的div