パスを描画し、ジェスチャレコグナイザーを介してビューをドラッグ可能にすることができます。ドラッグ可能なパス上でポイントを作成するにはどうすればよいですか。ビュー内の位置を確認し、ドラッグされた位置に位置をリセットするには、その点を特定する必要があると思いますが、それが方法がわかりません。
質問する
255 次
1 に答える
1
CGPath
またはのヒットを検出する機能がありますUIBezierPath
。ON touchesBegan
:メソッド次のいずれかの方法を使用して、ヒットポイントがパス上にあるかどうかを検出できます。
の場合UIBezierPath
:- (BOOL)containsPoint:(CGPoint)point
の場合GGPath
:
bool CGContextPathContainsPoint (
CGContextRef context,
CGPoint point,
CGPathDrawingMode mode
);
次に、このポイントがパス上にある場合は、フラグを設定できます。メソッドでtouchesEnd
は、変換されたポイントを取得できます。ただし、パスを再描画する必要があります。パスは弾力性がありません。
編集:あなたのケースでの私の仕事の1つは、CAShapeLayer.
CAShapeLayerがUIBazierPath
またはを描画できることCGPathRef
です。また、strokeendとstrokestartのプロパティを介してアニメート可能です。次のコードを参照して、次のコードを使用してパスを描画する方法を理解してください。CAShapeLayer
UIBezierPath *path = [UIBezierPath bezierPath];
// Draw your path acording to your requirements
// Remember that you don't need to stroke path in this implementation
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
shapeLayer.path = path.CGPath; // path is a UIBezierPath object
shapeLayer.strokeColor = [UIColor redColor].CGColor;
shapeLayer.fillColor = [UIColor clearColor].CGColor;
shapeLayer.lineWidth = 1.5;
shapeLayer.strokeStart = 0.0;
shapeLayer.strokeEnd = 1.0;
[shapeLayer renderInContext:ctx]; // you can also use addSubLayer: and drawInContext
于 2012-12-05T14:37:41.767 に答える