CAShapeLayerシンプルで実用的な(2)

免責事項:この記事はブロガーオリジナル記事ですが、許可ブロガーなく再生してはなりません。https://blog.csdn.net/WangErice/article/details/51580955

最近、網易のニュースで見られる非常に複雑ほとんど効果はありませんが、網易は、私たちが感じを取り、スキップボタンスタートページの右上隅です。


右、あなたは間違っていないよ、右上隅にある小さな矢印ボタンで、そして今、我々はそれを達成しようとします。コントロールがイベントに応答することができますので、私たちはUIButtonから継承されたコントロールを書き換えるましょう。

定義されたクラスはSkipButton UIButtonから継承し、その後、アニメーションのエッジを達成するためにCAShapeLayerを使用しています。

1)まず、コールバックメソッドを定義します



カスタム初期化メソッド。


クリックイベントのコールバックメソッドを可能にするために、我々はプロパティがインタフェースを提供するように設定されています、プロパティがYESで、コールバックインタフェースをトリガーするクリックイベントは、デフォルトを統一治療をトリガしないでくださいイベントによって渡されます


これは、アニメーションを開始するための方法を提供し、


2)メソッドの実装

初期化処理では2.1、


パラメータ:blockKey文字用いたアドレス値が格納されたキーブロックのコールバックメソッドとして使用されている静的変数を定義します

objc_setAssociatedObject セルフ、&blockKey 、仕上がり、  OBJC_ASSOCIATION_COPY コールバックメソッドを格納する)、他の方法で使いやすいです。

;

circleColor:着信色の外輪に初期化メソッドを格納します。

線幅:初期化方法の求心外側円形線幅を記憶します。

timeCount:アニメーションのメモリ初期化処理の着信期間;

shapeLayer:グラフィカル外側環状層を表示します。

progressAni:CABaseAnimationは、外輪の目的を達成します。

2.2 shapeLayerとprogressAniを作成するために、遅延ロードを使用して


shapeLayerを作成する過程で、我々はラジアン間隔 - 全円反時計回りの経路(-M_PI_2、(M_PI * 2+ M_PI_2))がパスに割り当てられている_shapeLayer属性。

初期値が与えられていない場合、progressAni、持続性の割り当てを作成するプロセスでは、デフォルト値は2.0秒です。

アニメーションが終了したとき、我々はコールバックプロキシ方式のタイミングの下部を介して取得できるように、同時に、映画のエージェントを指定します。



だから、すべてを終了する準備ができて、ここでの焦点は、我々はstartAnimation方法を実現する必要があります。


場合sameActionWithClickプロパティがYESで、その後、クリックイベントにコールバックメソッドを呼び出している間、クリックイベントを設定し、shapeLayer上のグラフィック層を除去しながらアニメーションとShapeLayerは、その後、外側のリングを避けるために、イベントをクリックして表示し続けます。


詳細な実装を学びたい、ダウンロードしてくださいSkipButtonDem O.

おすすめ

転載: blog.csdn.net/WangErice/article/details/51580955