objective-c - 从 UIViewController 绘制虚线

标签 objective-c ios cocoa-touch cgcontext

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

最佳答案

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

关于objective-c - 从 UIViewController 绘制虚线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11784057/

相关文章:

iphone - 模拟器和 IRL iPhone 没有相同的行为

ios - 调整 UIColor 的 alpha

ios - 闭包内的自实例

ios - 将 "SF UI Display Bold"设置为标签字体

objective-c - 关于 iPhone SDK,您希望早点知道什么?

objective-c - 来自 removeObjectsInRange : but passed range is within bounds 的 NSRangeException

objective-c - IOS:在表格 View 中搜索名称

javascript - 如何将 Web 应用包装为 iOS 应用

ios - RawOptionSetType 兼容 Objective-C 吗?

ios - Swift 中基于之前 View Controller 的 If 语句