22

一部の Cocoa コードを Cocoa Touch に移動したときに、UIBezierPath に「パスの要素へのアクセス」メソッドが欠落していることがわかり、がっかりしました。

– elementCount
– elementAtIndex:
– elementAtIndex:associatedPoints:
– removeAllPoints
– setAssociatedPoints:atIndex:

Cocoa Touch でこれらの要素を取得する唯一の方法は、CGPathApply. これを UIBezierPath のサブクラスまたはカテゴリとして再作成しようとする前に、これが既に行われているかどうか疑問に思っていました。このようなものがすでに利用可能であるかどうか、誰かが考えを持っていますか?

4

2 に答える 2

1

https://github.com/seivan/UIBezierPathPortにポートを作成しましたが、Swift を使用しています。テスト スイートとドキュメントがあります。Beta 5 以降で動作します。

技術的には、Obj-C プロジェクトで Swift を使用できるはずです。

あなたの好みを教えてください。

于 2014-08-06T18:36:32.613 に答える
1

数か月前に同じ問題に遭遇しましたが、当時はすぐに利用できるものを見つけることができませんでした。(正直なところ、ルートに行くことCGPathApplyは私のニーズにそれほど悪くなかったので、正直に言うとそれほど難しくはありませんでした).

applier 関数はCGPathElement内のすべてに対して呼び出されますCGPath。このような要素はCGPathElementTypeと の C 配列で構成されCGPointsます。

aCGPathElementTypeは5つの異なる値のみを持つ列挙型であるため

enum CGPathElementType {
   kCGPathElementMoveToPoint,
   kCGPathElementAddLineToPoint,
   kCGPathElementAddQuadCurveToPoint,
   kCGPathElementAddCurveToPoint,
   kCGPathElementCloseSubpath
};

パスの(コントロール)ポイント操作/検査を行うために、それほど多くのコードを書く必要はありません。ただし、同じインターフェイスを利用できると便利です。

于 2011-11-10T09:56:31.470 に答える