私が持っているもの:
この行を作成するために、私は基本的に を持っておりUIView
、次のことを行います。
void setLayerToLineFromAToB(CALayer *layer, CGPoint a, CGPoint b, CGFloat lineWidth)
{
CGPoint center = { 0.5 * (a.x + b.x), 0.5 * (a.y + b.y) };
CGFloat length = sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
CGFloat angle = atan2(a.y - b.y, a.x - b.x);
layer.position = center;
layer.bounds = (CGRect) { {0, 0}, { length + lineWidth, lineWidth } };
layer.transform = CATransform3DMakeRotation(angle, 0, 0, 1);
}
注: このコードは、stackoverflow で見つかったので、誰かが私にそれへの参照を与えることができれば、私は感謝します.
私が欲しいもの:
わかりましたので、私が必要とする「唯一の」ことは、 でこのパターンを作成することUIView
です。私は Quartz2D を使用してこれを行うことができることを知っています (それを行う簡単な方法はここにあります)。CALayer
しかし、私は draw メソッドに行くのではなく、 を操作してやりたいと思っています。なんで?で行っている変換のため、メソッドUIView
を使用して正しく描画できません。draw
編集1:
私の問題を説明するために:
通常、あなたが持っているものはUIView
基本的にそこに何かを描くだけです (この場合は単純な線)。「灰色」の領域を取り除くために私が見つけた解決策は、何かを描く代わりに、UIView
それ自体を変換することでした。完全に塗りつぶされた行が必要な場合はうまく機能しますが、破線が必要な場合に問題が発生します。