(潜在的に膨大な) 数のコンポーネントに対して効率的なヒット テストを実行する必要があるため、すべてのプリミティブをNSBezierPath
インスタンスとして表現しました。これまでのところ、すべてうまくいっています。
現在、オブジェクトの変換NSString
、特にビュー内での位置の反映に問題がありNSString (BezierConversions)
ます。Apple の SpeedometerView の例のカテゴリを使用して、文字列をベジエ パスに変換しています。
文字列用に作成されたベジエ パスは見栄えがしNSString
ますが、ビュー内のインスタンスの場所の位置に一致するように配置することはうまく機能しないため、この質問は実際には
NSBezierPath
そしてtransformUsingAffineTransform:
対。NSAffineTransform
ビューに適用されたものとの組み合わせNSString drawAtPoint:
私のテストプロジェクトでは、些細なケースでも失敗します:
以下を使用して描画された文字列の灰色のベジエ表現:
NSAffineTransform *moveFinal = [NSAffineTransform transform];
[moveFinal translateXBy:x yBy:y];
[textBezier transformUsingAffineTransform:moveFinal];
と紫の文字列経由
[testString drawAtPoint:NSMakePoint(x, y)
withAttributes:attributes];
同じ属性、同じ入力位置、ビュー内の異なる場所。
そして、回転したテキストではさらに悪化します。
更新 #1
によって返されるさまざまな境界ボックスに煮詰めているようです
NSString sizeWithAttributes:
NSBezierPath bounds
NSString
現在、 boundingRectWithSizeを試しています