我有一个UIViewController,里面有一个UIView,我想在它上画一条直线。这样做最简单,最有效的方法是什么?我该怎么做呢?它只是一条宽度为150的水平虚线,带有灰色。我环顾四周似乎在使用 CGContextSetLineDash是解决方案,这是我到目前为止所拥有的:
-(void) drawRect:(CGRect) rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, 100);
CGFloat dashes[] = {1,1};
CGContextSetLineDash(context, 2.0, dashes, 2);
CGContextStrokePath(context);
}
答案 0 :(得分:3)
CGContextStrokePath
绘制当前路径,但是,您从不向上下文添加任何路径,因此不会绘制任何内容。
在CGContextStrokePath
来电之前添加以下两行,你会看到一些内容:
CGContextMoveToPoint(context, 0, self.bounds.size.height * 0.5);
CGContextAddLineToPoint(context, self.bounds.size.width, self.bounds.size.height * 0.5);
如果您还没有设置笔触颜色,还应该添加这样的颜色(50%灰色):
CGContextSetRGBStrokeColor(context, 0.5, 0.5, 0.5, 1.0);
我不确定结果是否真的是你想要的,带有{1,1}的图案的100点虚线看起来更像是带有细条纹图案的矩形而不是像虚线。如果你想要你的圆点是圆圈,你将不得不在某种循环中手动绘制它们。
答案 1 :(得分:1)
试试这个:
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGContextSetStrokeColorWithColor(context, color.CGColor);
CGContextSetLineWidth(context, 2.0);
CGFloat lengths[] = {0, 8};
CGContextSetLineCap(context, kCGLineCapRound);
CGContextSetLineDash(context, 0.0f, lengths, 2);
CGContextMoveToPoint(context, 10, 10);
CGContextAddLineToPoint(context, 200, 10);
CGContextStrokePath(context);
CGColorSpaceRelease(colorspace);