2017-06-10 8 views
1

私は最近UIViewのブロック・アニメーション補完常に真

//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 

リターン偽作るために仮定されているとします。しかし、終了は常に真です。このアニメーションをキャンセルするかどうか、アニメーションを続行するかどうか、アニメーションに何をするかは関係ありません。完了ハンドラは常にtrueです。この問題に関するヒント

答えて

1

setContentOffsetを呼び出すとアニメーションが指定されます:false、それが唯一のプロパティであれば、実際のアニメーションは実行されません。したがって、.animate(...)への呼び出しは常に値本当。このプロパティ(または別のもの)をanimated:trueで設定し、アニメーションが終了するにはアニメーションの長さが短すぎると、パラメータの値がfalseで完了する可能性があります。

+0

あなたはうそをつく!気づいていない、オートコンプリートハハ!私が家に帰ってからこれを試してみましょう。 - それは私の唯一のアニメーションオブジェクトです。 – impression7vx

+0

私は答えを授与していますが、それは技術的に私の問題を解決しませんでした。setContentOffSet:animated:非常にユニークなメソッドであり、アニメーションが真であればどれほど速く、遅くするかは操作できません。 – impression7vx

関連する問題