プログラムコードで描いたパスに沿って画像を動かしたい。
以前に同様の質問 ( https://stackoverflow.com/questions/1571182/how-to-limit-a-uiimageview-to-move-in-a-specific-path ) をしたことがありますが、間違った方法。画像は UIImageView である必要はありません。また、上記の回答は、iPhone ではなく Mac OS X のみであることが後でわかりました。
とにかく、これは単純なパスを描画するための私のコードです。
CGContextSetRGBStrokeColor(theContext, 1.0, 0.0, 1.0, 1.0);
// Draw them with a 2.0 stroke width so they are a bit more visible.
CGContextSetLineWidth(theContext, 2.0);
// Draw a bezier curve with end points s,e and control points cp1,cp2
CGPoint s = CGPointMake(30.0, 120.0);
CGPoint e = CGPointMake(300.0, 120.0);
CGPoint cp1 = CGPointMake(120.0, 30.0);
CGPoint cp2 = CGPointMake(210.0, 210.0);
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, s.x, s.y);
CGPathAddCurveToPoint(path, NULL, cp1.x, cp1.y, cp2.x, cp2.y, e.x, e.y);
CGPathAddCurveToPoint(path, NULL, cp2.x, cp1.y, cp1.x, cp2.y, s.x, s.y);
CGPathCloseSubpath(path);
CGContextSetRGBStrokeColor(theContext, 1.0f, 0.0f, 0.0f, 1.0f);
CGContextAddPath(theContext, self.path);
CGContextSetLineWidth(theContext, 1.0);
CGContextStrokePath(theContext);
ここで、theContext は CGContextRef です。上記のコードの結果は、90 度回転した「8」形状を描画します。しかし、画像をパスに追従させるにはどうすればよいでしょうか。
更新#1:質問が重複して申し訳ありませんが、パスに従って画像を回転させる方法についてさらに質問したいと思います(つまり、頭のベクトルはパスの接線に従う必要があります)。誰かがいくつかのアイデアを提案できますか?
更新 #2: パスを動的に変更する方法は?