如何使用CGContext / CGContextRef绘制虚线?为什么我的代码产生实线?

时间:2014-03-10 09:30:16

标签: ios objective-c cocoa-touch xamarin.ios

这是Xamarin.iOS代码,但我认为原生人也可以发现问题,所以我也将它标记为ObjC。

我正在对UIView进行子类化并“滥用”它以从视图的X,Y绘制虚线到视图的右边,底部边界。

我设置的颜色是白色。线条样式应该是虚线。但是我得到了一个黑色实体行。我在这里做错了什么?

public override void Draw (RectangleF rect)
{
    using (CGContext g = UIGraphics.GetCurrentContext ())
    {
        g.SetLineWidth (1f);
    g.SetLineDash (0, new float[] { 10f, 4f });

        g.MoveTo (rect.X, rect.Y);
        g.AddLineToPoint (rect.Right, rect.Bottom);
        g.SetStrokeColor (this.color.CGColor);
        g.StrokePath ();
    }
}

1 个答案:

答案 0 :(得分:3)

一旦你在这里发布问题,答案就会变得很明显: - )

此行导致问题:

g.SetLineDash (0, new float[] { 10f, 4f });

必须是:

g.SetLineDash (0, new float[] { 10f, 4f }, 2);

来自Apple的documentation

  

如果lengths参数指定了一个数组,则传递数字   数组中的元素。否则,传递0。