2016-12-26 25 views
0

ここでは、ラベルを通知としてUIViewを表示するためのコードがいくつかあります。要素に強制的にアニメーションを強制終了できますか?

self.not1cons.constant = 0 
self.notificationLbl1.text = self.notification1 

UIView.animate(withDuration: 2.5, delay: 0.3, options: .allowAnimatedContent, animations: { 

self.view.layoutIfNeeded() 

     }, completion: { finsihed in 

      self.not1cons.constant = -100 

      UIView.animate(withDuration: 2.5, delay: 2.0, options: .allowAnimatedContent, animations: { 

       self.view.layoutIfNeeded() 

     }, completion: { finshed in 

      }) 
     }) 

オフスクリーンから開始して表示されます。数秒間定位置にとどまり、オフスクリーンの元の位置に戻ります。これらの連鎖したアニメーションを即座に実行するためのコードが必要です。これは可能ですか?

+0

'' delay'を '2.0'追加してから遅延があると不平を言いましたか? – matt

+0

「即座に起こる」ということは、正確にはどういう意味ですか?アニメーションをすぐに終了したい、またはアニメーションの途中でアニメーションを取り消したいと思っていることを事前に知っていますか? – nathan

+0

私はそれが正しいと思っているのかどうか不明ですが、私は@matt noteに同意します。なぜ、2番目のアニメーションの遅延を追加するのですか? –

答えて

0

システムが生成するCAAnimationsを操作することでおそらくこれを達成できますが、これはかなり難しいビジネスです。危険な現行の実装に関する文書化されていない詳細に依存しているため、素晴らしいアイデアではありません。

代わりに、UIViewPropertyAnimatorの新機能を使用するようにアニメーションを再作成することをお勧めします。UIViewPropertyAnimatorは、アニメーションの一時停止と再開をサポートしています。また、任意の点を前後にスクラブできます。

GitubのUIViewPropertyAnimator-testというデモプロジェクトを使用して、スライダを使って前後にアニメーションをスクラブできます。それはあなたの必要以上に複雑ですが、それはあなたにアイデアを与える必要があります。

+0

クールなライブラリをありがとうが、私はちょうど0に不透明度を設定する関数を使用しました。 –

関連する問題