2017-08-06 22 views
-1

私はゲームのインターフェイスの一部としてシンプルな形を描こうとしています。ほとんどのチュートリアルでは、UIBezierPathを使ってCAShapeLayerのパスを定義しています。しかし、私は、UIBezierPathに既にfill functionが存在することに気付きました。UIBezierPath fillとCAShapeLayer

これはおそらくばかげた質問ですが、それを使用してパスを描くために別のCAShapeLayerを使用することとの違いは何ですか?また、どちらが良いですか?

答えて

4

CAShapeLayerの "CA"は、CoreAnimationを表します。

UIBezierPathにアニメーション化、移動、操作などを行う場合は、CALayer(またはサブクラスCAShapeLayer)を使用する必要があります。

UIBezierPathsは、あなたが望むものが単純に "描く"のであれば、正しいものです - 通常draw(rect:)で行われます。もしあなたがそうするなら、あなたはまた "再描画"することができます。

しかし、図形に対して永続化(および制御)したい場合は、UIBezierPathCAShapeLayerに変換します。

+0

uibezierpathに色を塗りつぶしてレンダリングする場合はどうすればよいですか?私たちの唯一の選択はCAShapeLayerではありませんか? @dfd –

+1

私は最も正確な答えは「それは依存している」と思います。あなたは、*または* animate *という単語を使用していない、または私が使用していることを暗示しているので、「いいえ」と言います。すべてのビューには、 'UIBezierPath'を描画できるコンテキストを含む、' draw(rect:) '関数があります。このパスには、* stroke *と* fill *カラーがあります。また、ベジェパスを閉じる*を選択した場合、囲まれたパスに塗りつぶしの色が塗りつぶされます。はい、それは起こることがいくつかあります - そして、 'CAShapeLayer'はあなたにアニメーション化できるレイヤーを与えますが、それは*唯一の選択肢ではありません。 – dfd

+0

私は、CAshapelayerのパスから形状を作成するときに、それを正確にレンダリングするのが簡単だからですが、cgcontextrefを使うと悪夢になることがあるので、私はそれを聞いています。だからこそ私はこのことに悩まされている。https://stackoverflow.com/q/48599949/3124848 @dfdもしあなたが私を指導できるなら、本当に感謝している。 –

関連する問題