:より転載iOSの学習:CAShapeLayerとのdrawRectコントラスト、絵画やグラフィックUIBezierPath
使用しCAShapeLayer
、以下の利点のいくつかを
速いレンダリング。
CAShapeLayer
比べて、同じグラフィックを描画し、ハードウェアアクセラレーションを使用してCore Graphics
はるかに高速。メモリの効率的な使用。
CAShapeLayer
普通のが好きませんCALayer
グラフィック搭乗同じを作成するには、そうどんなに大きな、あまりにも多くのメモリを占有されることはありません。これは、境界層をクリッピングされることはありません。一つは、
CAShapeLayer
境界の外に描くことができます。あなたのパスは、使用してレイヤーのようではありませんCore Graphics
通常のCALayer
カットオフされるよう。ピクセレーションは発生しません。あなたが与えるときに
CAShapeLayer
3D変換を行い、同じピクセル化となり、通常の層の搭乗図ではありません。
CAShapeLayerとのdrawRectを比較します
CAShapeLayer
継承されCALayer
、そのために使用することができるCALayer
すべてのプロパティのために。しかし、CAShapeLayer
作るセンスを使用したニーズやベジェ曲線。-(void)drawRect:(CGRect)rect{}
それがあるだけの方法UIView
私たちのドローグラフィックス機能を完了するには、このメソッドをオーバーライドする方法。drawRect:のdrawRectはCPU、消費性能を取り上げ、CoreGraphic枠組みを属します。
CAShapeLayer:CAShapeLayerは、パフォーマンスを保存、グラフィックスをレンダリングするGPUによってCoreAnimationフレームを属します。携帯電話のGPUに直接提出されたアニメーションのレンダリングは、内に消費しません。
UIBezierPathとCAShapeLayer関係
形状はCAShapeLayerは意味の形状を表し、それを有効にする必要が形状です。
ベジェ曲線は、パスベクトルに基づいて作成することができ、そして
UIBezierPath
クラスがされているCGPathRef
カプセル化されました。するベジェ曲線
CAShapeLayer
経路提供CAShapeLayer
設けパスでレンダリングします。パスは閉じられ、そのうちにマッピングされますShape。
ベジェ曲線は、ベジェ曲線は閉ループではない場合であっても、最後まで閉曲線接続端部であるパスCAShapeLayer経路として使用されます。
CAShapeLayer与のCALayer
それはフレームの値の必要がCALayerのが一般的であり、初期化されると、フレームは、割り当てられた値の境界自体が成形されている特定のビューに対する値、および矩形とほぼ一致しています。
CAShapeLayerフレームは、初期値を指定する必要がありますが、それはそのプロパティパスから、その形状を形状を持っていません。
CALayerのCAShapeLayerとは異なり描かれたときにそのCALayerのから継承された属性が動作しない、属性を持っています。
CAShapeLayerは非常に重要ないくつかを持っています
指定されたパスに添付CAShapeLayerは、完了していないパスが自動的にエンドツーエンドを接続した場合でも、パスが与えられ、しなければなりません。
CAShapeLayerプロパティ:strokeStartとstrokeEndが占有で、このパスに割合を表します。
唯一のアニメーション効果の縁に沿って限定CAShapeLayerアニメーションが、それは充填の効果を達成することができません。
CAShapeLayerオブジェクトのプロパティ一覧
プロパティ名 | 説明 |
---|---|
パス | CGPathRefオブジェクト、グラフィック副業パス |
線幅 | 副業の幅 |
strokeColor | サイドラインの色 |
lineDashPattern | デフォルトは実線で、アレイは、アレイのNSNumberであり、破線が順次に配列値が単一のラインの長さを表しており、ブランクの長辺のスタイルを設定し、例えば:配列@ [2,2,3,4]を示し図2は、長さを有するライン、ブランク2の長さは、3行の長さであり、ブランク4の点線の長さは、循環続けます。 |
lineDashPhase | セットは、@ lineDashPattern場合、すなわち、パターンエッジの開始位置[2,2,3,4]、lineDashPhase 2の開始位置の最初の行の長さであります |
このlinecap | 行末スタイル、デフォルトkCALineCapButt |
たlineJoin | 変曲点でのスタイルライン、デフォルトkCALineJoinMiter |
strokeStart strokeEnd | CGFloatタイプ、開始と終了端を示す[0,1]ビデオ(すなわち、ルート上のパーセンテージ) |
塗りつぶしの色 | CGColorRefオブジェクト、グラフィックスが色を塗りつぶし、デフォルトは黒です |
ます。https://www.jianshu.com/p/55864e5f8a04で再現