が必要なもの異なるダッシュ幅を持つ2つのベジェパスです。
はここから起動することができ
:
T0が高いダッシュベジエ取得:
UIBezierPath* oval2Path = [UIBezierPath bezierPathWithOvalInRect: yourRect];
[UIColor.redColor setStroke];
oval2Path.lineWidth = 13;
CGFloat oval2Pattern[] = {2, 20};
[oval2Path setLineDash: oval2Pattern count: 2 phase: 0];
[oval2Path stroke];
を、小さなダッシュパターン化ベジエを取得するには、あなたはダッシュの間のギャップを縮小する必要があります。
UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: yourRect];
[UIColor.redColor setStroke];
ovalPath.lineWidth = 6;
CGFloat ovalPattern[] = {2, 1};
[ovalPath setLineDash: ovalPattern count: 2 phase: 0];
[ovalPath stroke];
と今は一緒にこれら二つのベジェパスを置くことができます。
- (void)drawFrame: (CGRect)frame
{
// Oval Drawing
UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(CGRectGetMinX(frame), CGRectGetMinY(frame), 70, 70)];
[UIColor.redColor setStroke];
ovalPath.lineWidth = 6;
CGFloat ovalPattern[] = {2, 1};
[ovalPath setLineDash: ovalPattern count: 2 phase: 0];
[ovalPath stroke];
// Oval 2 Drawing
UIBezierPath* oval2Path = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(CGRectGetMinX(frame) + 0.5, CGRectGetMinY(frame) - 0.5, 70, 70)];
[UIColor.redColor setStroke];
oval2Path.lineWidth = 13;
CGFloat oval2Pattern[] = {2, 20};
[oval2Path setLineDash: oval2Pattern count: 2 phase: 0];
[oval2Path stroke];
}
スウィフト:あなただけの必要な場所
func drawCanvas1(frame frame: CGRect = CGRect(x: 86, y: 26, width: 70, height: 70)) {
let context = UIGraphicsGetCurrentContext()
// Oval Drawing
let ovalPath = UIBezierPath(ovalInRect: CGRect(x: frame.minX, y: frame.minY, width: 70, height: 70))
UIColor.redColor().setStroke()
ovalPath.lineWidth = 6
CGContextSaveGState(context)
CGContextSetLineDash(context, 4.5, [0, 1], 2)
ovalPath.stroke()
CGContextRestoreGState(context)
// Oval 2 Drawing
let oval2Path = UIBezierPath(ovalInRect: CGRect(x: frame.minX + 0.5, y: frame.minY - 0.5, width: 70, height: 70))
UIColor.redColor().setStroke()
oval2Path.lineWidth = 13
CGContextSaveGState(context)
CGContextSetLineDash(context, 39, [1, 10], 2)
oval2Path.stroke()
CGContextRestoreGState(context)
}
同様にあなたは、弧のために同じアプローチに従うことができますbezierPathWithOval
メソッドをbezierPathWithArcCenter
メソッドに置き換える方法
はその点に注意してください。
CGFloat ovalPattern[] = {2, 1};
// 2は、ダッシュ幅と1であるダッシュ
の間のギャップであるあなたは、精度のために、これらの値を調整することができます!
これは実際にはかなり賢いです。私はそれを考えていただろうか分からない。 –
ペイントコードツールを使用すると、ベジェパス上で多くの組み合わせを実行できます。あなたはそれを試してみましょう@GlennHowes –
うわー、感謝@TejaNandamuri - あなただけの努力のために最高の投票を与える!これが動作する場合は、moでチェックします:) – sukh