0

私は一連の UIBezierPath を描いていますが、それらはすべてサイズと場所が異なります。各形状を特定のサイズに拡大縮小し、上の特定の場所に移動したいと思いUIViewます。私はCGAffineTransformation今一緒に働いています。場所とサイズがすべての形状で機能しないため、すぐに乱雑になります。

を特定のサイズにスケーリングし、UIBezierPathほとんどの形状で機能する特定の場所に変換 (移動) する方法はありますか? 私が気付いていない変換を使用せずに、形状のサイズと位置を設定する方法があるでしょうか? 私が描いている形はすべてサイズが大きく異なり、エッジがギザギザになっているものもあります。

これは、私がこれまでに AffineTransformations で行っていることです。

CGAffineTransform scale = CGAffineTransformMakeScale(2.0f,2.0f); 
[path applyTransform:scale];

CGAffineTransform move = CGAffineTransformMakeTranslation(-10, -10);
[path applyTransform:move];

はどこpathですかUIBezierPath

あれは正しいですか?私が使用している値 (-10、2.0f) は単なる例です。

4

2 に答える 2

0

この問題を解決する最善の方法は、パスを CAShapeLayer に変換し、レイヤーの位置とサイズを設定することだと思います。とてもシンプルでエレガント。ただし、実装によっては解決しなければならないバグがいくつかあります。

myCAShapeLayer.path = myUIBezierPath.path;
myCAShapeLayer.position = CGRectMake(x, y);

CALayersは素晴らしいです!

于 2013-05-29T16:36:04.920 に答える