2012-08-02 72 views
1

我有一个UIViewController,它有一个UIView,我想绘制一条直线虚线。什么是最简单和高性能的方法来做到这一点?我该怎么做呢?它将只是一个宽度为150的灰色水平虚线。我环顾四周,似乎使用 CGContextSetLineDash是解决方案,这是我到目前为止有:从UIViewController绘制虚线

-(void) drawRect:(CGRect) rect 
{ 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(context, 100); 
    CGFloat dashes[] = {1,1}; 
    CGContextSetLineDash(context, 2.0, dashes, 2); 
    CGContextStrokePath(context); 
} 
+0

为了得到有用的答案,你需要证明你做了什么,在哪里,你就完蛋了。没有人会为您编写完整的程序,但我们很乐意帮助您采取特定步骤并朝正确的方向推动。 – Dustin 2012-08-02 19:06:03

+0

对不起,我刚添加了我的代码,我在哪里..不介意我的问题投票? – xonegirlz 2012-08-02 19:06:56

+0

当你使用这段代码时会发生什么? – Dustin 2012-08-02 19:18:59

回答

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); 

我不知道,如果结果真的是你想要的,用的一个模式的100点虚线{1,1}看起来更像是不是像虚线以纵条纹状的矩形。如果你想让你的圆点成为圆形,你将不得不通过某种循环手动绘制这些圆点。

+0

嗯..我怎么得到虚线?模式应该是什么? – xonegirlz 2012-08-02 20:45:18

+0

你想让它看起来像什么,你可能会展示一张图片吗? – omz 2012-08-02 21:01:10

0

试试这个:

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);