【问题标题】:drawing dotted lines from UIViewController从 UIViewController 绘制虚线
【发布时间】:2012-08-02 19:00:41
【问题描述】:

我有一个 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);
}

【问题讨论】:

  • 为了获得有用的答案,您需要展示您所做的事情以及您遇到的问题。没有人会为您编写完整的程序,但我们很乐意为您提供具体的步骤并推动正确的方向。
  • 抱歉,我刚刚添加了我的代码以及我在哪里......介意不要对我的问题投反对票吗?
  • 使用这段代码会发生什么?

标签: objective-c ios cocoa-touch cgcontext


【解决方案1】:

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 点虚线看起来更像是带有细条纹图案的矩形,而不是虚线。如果你想让你的圆点是圆的,你将不得不在某种循环中手动绘制它们。

【讨论】:

  • hmm..那么如何获得虚线?模式应该是什么?
  • 你想要它是什么样子的,你能不能给个图片?
【解决方案2】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 2021-01-24
    • 1970-01-01
    • 2017-12-21
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-08
    • 2012-09-23
    相关资源
    最近更新 更多